Передача контекста базы данных

196
24 марта 2018, 13:35

Начал изучать юнит-тесты. Возникла проблема. Имеется контроллер, конструктор которого принимает контекст базы данных

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();   
Answer 1

В контексте юнит-тестов вам лучше передать в конструктор тестируемого контроллера не настоящий контекст, а его тестовую реализацию.

В вашем случае можно выделить из UserContext интерфейс IUserContext и создать его моковую реализацию для тестирования корректной работы контроллера.

public AccountController(IUserContext userContext)
{
    this.userContext = userContext;            
}

Тестовая реализация контекста нужна потому, что он является зависимостью по отношению к тестируемой системе AccountController. Изменения в этой зависимости могут повлиять на результаты тестов. Так как речь про юнит-тест (не путать с интеграционным) то это недопустимо.

Похожий вопросы на английском SO: Mocking EF DbContext with Moq

READ ALSO
Парсинг текста из файла в форму

Парсинг текста из файла в форму

Делаю программу для парсинга текста из файловПрограмма для анкетирования

173
Как узнать глубину рекурсии?

Как узнать глубину рекурсии?

как узнать глубину рекурсии или как реализовать эту программу:Написать для NodeJS функцию, которая рекурсивно выводит список всех файлов и папок...

266
Не работают функции slideDown и fadeOut

Не работают функции slideDown и fadeOut

По идее должно делать плавную анимацию и при загрузке плавно появляться, но выдает ошибку, что slideDown и fadeOut не являются функцией

193
js вытянуть значения ячеек Excel в переменные

js вытянуть значения ячеек Excel в переменные

Коллеги доброе время сутокЗаинтересовался реализацией "js вытянуть значения ячеек Excel в переменные"

217