Я работаю над проектом веб-приложения, использующего ASP.NET Core 2.1. Наряду с разработкой API мы также пытаемся протестировать его с использованием инфраструктуры MSTest.
Мои контроллеры наследуются от ControllerBase
. В своем тестовом стенде я высмеиваю свой бизнес-уровень с помощью Moq Framework. Когда я вызываю Controller из метода test, мне нужно передать экземпляр Mocked Business в контроллер, для которого я пытаюсь объявить параметризованный конструктор.
Это нормально работает для тестовых случаев, но мой нормальный поток нарушен. Я даже пытался использовать как параметризованные, так и беспараметрические конструкторы.
Это прекрасно работает с Dot Framework, который наследует APIController.
public class BookingController: ControllerBase {
BusinessManager business = new BusinessManager();
//Non-Parameterized Constructor
public BookingController() {}
//Parameterized Constructor
public BookingController(BusinessManager mockedBusiness) {
this.business = mockedBusiness;
}
}
Не параметризованный конструктор должен использоваться при вызове из пользовательского интерфейса.
Параметризация должна работать только при вызове из Test Bench, передавая некоторый экземпляр.