Начал изучать юнит-тесты. Возникла проблема. Имеется контроллер, конструктор которого принимает контекст базы данных
public AccountController(UserContext userContext)
{
this.userContext = userContext;
}
Контекст
public class UserContext:DbContext
{
public DbSet<User> Users { get; set; }
public UserContext(DbContextOptions<UserContext> options) : base(options)
{
}
}
Каким образом контекст можно передать при инициализации нового объекта?
AccountController controller = new AccountController();
В контексте юнит-тестов вам лучше передать в конструктор тестируемого контроллера не настоящий контекст, а его тестовую реализацию.
В вашем случае можно выделить из UserContext
интерфейс IUserContext
и создать его моковую реализацию для тестирования корректной работы контроллера.
public AccountController(IUserContext userContext)
{
this.userContext = userContext;
}
Тестовая реализация контекста нужна потому, что он является зависимостью по отношению к тестируемой системе AccountController
. Изменения в этой зависимости могут повлиять на результаты тестов. Так как речь про юнит-тест (не путать с интеграционным) то это недопустимо.
Похожий вопросы на английском SO: Mocking EF DbContext with Moq
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю программу для парсинга текста из файловПрограмма для анкетирования
как узнать глубину рекурсии или как реализовать эту программу:Написать для NodeJS функцию, которая рекурсивно выводит список всех файлов и папок...
По идее должно делать плавную анимацию и при загрузке плавно появляться, но выдает ошибку, что slideDown и fadeOut не являются функцией
Коллеги доброе время сутокЗаинтересовался реализацией "js вытянуть значения ячеек Excel в переменные"