Я новичок в проекте, который я должен расширить, поэтому я решил использовать TDD для быстрого распознавания любых проблем системы, которые я не совсем понимаю.Как модульный тест DBService, который использует Servicestack Funq IOC
Существует один класс под названием DBService
, который «инкапсулирует» весь доступ к db. Например, существует один метод, называемый getAllCustomers
, который возвращает список Customers
. Это будет выглядеть примерно так (это просто пример для лучшего понимания):
public class DBService
{
public IDbConnectionFactory DBFactory {
get { return DI.Container.Resolve<IDbConnectionFactory>(); }
}
public List<Customer> GetAllCustomers()
{
try
{
using (var connection = DBFactory.OpenDbConnection())
{
var dbResult = connection.Select<Customer>();
// code ommitted
}
}
catch (Exception e)
{
// code ommitted
}
}
}
Другая проблема заключается в том, что при запуске (в ServiceStack AppHost.Configure
) все таблицы созданы, если они не существуют, и для некоторых таблицы, если они существуют, некоторые столбцы и т. д. добавляются (вероятно, изменения, которые были добавлены позже)
Когда я сейчас, например, должен расширить клиента и добавить другое поле, адреса, которые я хотел бы сделать в стиле TDD, но я понятия не имею, как это сделать.
- Я не могу вводить любой
DBFactory
поскольку добытчик является частным - AFAIK я не могу использовать строку
:memory:
соединения дляOrmLiteConnectionFactory
, потому что я использую ServiceStack 3.9.74
Так что мои варианты здесь ?
Да, я согласен, что анти-шаблон-сервис-локатор - это то, что я должен стараться избегать. Я просто подумал, что есть простой способ без большого количества рефакторинга. – zlZimon
Это дело с [Технический долг] (https://www.google.com/search?q=technical+debt). Он всегда звонит в кредит. – Nkosi