Я работаю над веб-проектом, который получает данные из конечной точки API. Уровень API находится сверху уровня обслуживания и уровня хранилища внизу. Я написал модульное тестирование для Уровней обслуживания и API. Я использую структуру Moq для извлечения зависимостей. Теперь я хочу протестировать контроллер MVC. Я использую класс Request Manager, который является производным от HttpClient для получения данных из конечных точек API. Итак, как я могу проверить этот контроллер. Я написал единичный тест, но тест получает данные непосредственно из моей базы данных.Тестирование контроллера Mvc, который получает данные из конечной точки API
public class UserController : Controller
{
private RequestManager requestManager = new RequestManager();
// GET: User
public async Task<ActionResult> Index()
{
List<UserViewModel> allUsers = await requestManager.GetUsers();
if(allUsers == null)
{
throw new HttpException(404, "No Users Found");
}
return View(allUsers);
}
}
public class UserControllerTest
{
public UserController controller;
[OneTimeSetUp]
public void InIt()
{
controller = new UserController();
}
[Test]
public async Task TestIndex()
{
var view = await controller.Index() as ActionResult;
Assert.That(view is ViewResult);
Assert.That(view.Model is List<UserViewModel>);
}
}
абстрактная прокладка плотной связи и выявление зависимостей, чтобы их можно было издеваться/заменять, что обеспечивало большую гибкость во время модульного испытания. Вам нужно будет подумать о рефакторе, чтобы улучшить проверяемость вашего кода. Либо это, либо подумайте об использовании специального обработчика сообщений в вашем производном классе менеджера httpclient – Nkosi
Да, похоже, что я должен ввести интерфейс IRequestManager в контроллер и издеваться над ним. Как поможет мне обработчик пользовательских сообщений? –