Я работаю над проектом, созданным на Boilerplate Asp.Net, и теперь мне нужно выполнить единый тест сервисов, используя реальные репозитории с реальным подключением к базе данных (без насмешек) , Я использовал последний пост BringerOd в https://gist.github.com/hikalkan/1e5d0f0142484da994e0 в качестве руководства для настройки экземпляра UnitOfWorkScope. Таким образом, мой код в настоящее время выглядит следующим образом:Получение нового DbContext при модульном тестировании с помощью Boilerplate Asp.Net
IDisposableDependencyObjectWrapper<IUnitOfWork> _unitOfWork;
[TestInitialize]
public void SetUpService()
{
//initialize service
_unitOfWork = IocManager.Instance.ResolveAsDisposable<IUnitOfWork>();
UnitOfWorkScope.Current = _unitOfWork.Object;
UnitOfWorkScope.Current.Initialize(true);
UnitOfWorkScope.Current.Begin();
}
[TestCleanup]
public void CleanUpService()
{
UnitOfWorkScope.Current.Cancel();
_unitOfWork.Dispose();
UnitOfWorkScope.Current = null;
}
Это работает как шарм для первого модульного тестирования, но когда я пытаюсь сделать вызов хранилища во втором тесте, я получаю: «Операция не может быть завершено, потому что DbContext был удален ».
Мое предположение заключается в том, что при повторном запуске метода TestInitialize единица рабочей области присваивается тем же (расположенным) DbContext, а не новым. Я полагаю, что в моих реальных методах тестирования я мог бы настроить свой UnitOfWorkScope внутри используемого блока с помощью IUnitOfWork. Тем не менее, я действительно не хочу повторять эту логику внутри каждого теста. Кто-нибудь знает, как вручную получить эффект от использования блока, чтобы каждый раз получать новый DbContext?
@ StephenByrne: Насколько я могу судить, это * является неотъемлемой частью ответа (по крайней мере, по плакату): «Вы должны отметить метод вызова атрибутом [UnitOfWork]». –
@NathanTuggy - вредители, у меня плохая ночь, это была ошибка с моей стороны, закрытое голосование удалено. –
@StephenByrne: Я вижу более тонкие неправильные суждения только по ссылкам, чем что-либо еще в обзоре. Конечно, это сложно понять. –