У меня есть базовый контроллер, который я сделал, чтобы я мог легко передавать данные в представление главной страницы. Однако этому базовому контроллеру передается сервисный уровень, и все время, когда я запускаю свои модульные тесты, этот сервисный уровень убивает его, так как он пытается получить доступ к некоторому материалу базы данных.
private ServiceLayer service;
public ApplicationController():this(new ServiceLayer())
{
}
public PlannerApplicationController(IServiceLayer serviceS)
{
service= serviceS;
}
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
// some stuff gets called here.
}
Первое, что сервисный уровень называет
public ServiceLayer ()
: this(new Repository())
{
}
// есть другой конструктор для DI.
Таким образом, когда я запускаю свои тесты, и он переходит к моему контроллеру, который наследует этот базовый контроллер, когда он попадает в конструктор моих контроллеров, он, похоже, вызывает этот базовый контроллер.
Итак, в своих модульных тестах я попытался смоделировать базовый контроллер, выполнив что-то вроде этого
baseController = новый ApplicationController (SerivceLayerInterface);
Я использовал moq и прочее, чтобы смоделировать хранилище в интерфейсе serviceLayer, но, похоже, это не дает никакого эффекта.
Так что не уверен, что делать.