Я пытаюсь понять, как можно выполнить модульное тестирование проекта ASP.NET MVC, который получает доступ к данным через какой-то репозиторий.
Во время модульных тестов я, очевидно, хотел бы создать фиктивный репозиторий, но как передать этот фиктивный репозиторий тестируемому экземпляру контроллера? Каким образом реальный репозиторий, который действительно подключен к базе данных, попадет в контроллер?
Я просто делаю это через конструкторы, как я? показано ниже? Я думаю, что именно так я должен настраивать свои контроллеры, но я хотел бы получить подтверждение, что это правильно:
public class SampleController : Controller
{
private IRepository _repo;
//Default constructor uses a real repository
// new ConcreteRepo() could also be replaced by some static
// GetRepository() method somewhere so it would be easy to modify
//which concrete IRepository is being used
public SampleController():this(new ConcreteRepo())
{
}
//Unit tests pass in mock repository here
public SampleController(IRepository repo)
{
_repo = repo;
}
}