В своих модульных тестах я использую такие вещи, как AssemblyInitialize
, ClassInitialize
и TestInitialize для настройки моих тестов. В AssemblyInitialize
я инициализирую некоторые одноэлементные фабрики для создания сервисов, единицы работы и репозиториев (все через Unity / Dependency Injection). В моем TestInitialize я очищаю состояние, в котором они должны убедиться, что каждый тест может выполняться независимо.
Через Stackoverflow Я пришел к следующим статьям: Написание тестируемого кода и Как думать о «новом» операторе в отношении модульного тестирования . Я должен сказать, что они изменили то, как я думаю о некотором коде, который я написал, но мой ум все еще гудит.
Например, возьмите следующий код:
public class MyPresenter : BasePresenter<IMyView>
{
public MyPresenter(IMyView view)
: base(view)
{
}
public void PrepareView()
{
using (IMyService service = ServiceFactory.Instance.CreateService<IMyService>())
{
View.Data = service.GetData();
}
}
}
Который используется на странице aspx следующим образом:
Presenter = new MyPresenter(this);
if (!IsPostback)
{
presenter.PrepareView();
}
Как мне изменить этот тип вида с учетом предыдущих статей? Должен ли я передать экземпляр службы в метод PrepareView? Но тогда моя страница ASPX должна знать об услугах, фабриках и прочем, и утилизировать службу после ее использования.
Что мне делать с моей фабрикой в Синглтоне? Сделать это свойством класса и внедрить его через Unity?