Тестирование контроллера webapi с использованием "Moq" - PullRequest
1 голос
/ 08 апреля 2019

Я изучаю модульные тесты с использованием Moq, и у меня есть очень простой Webapi Controller, который только возвращает статус OK.

public class TestController : ApiController
{
    [HttpGet]
    [Route("api/v1/test")]
    public HttpResponseMessage GetHealth()
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}

Ну, я не знаю, как его протестировать с помощью Moq, ябуду признателен за помощь.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Нет необходимости в Moq Я думаю.

В своем модульном тесте вы можете создать новый контроллер.

var testController = new TestController();

После этого вы можете вызывать методы.

[Test]
public void TestHealth(){
  var testController = new TestController();
  var result = testController.GetHealth() as HttpResponseMessage
  Assert.That(result, Is.Not.Null);
  Assert.That(result.StatusCode, Is.EqualTo(200));
}
0 голосов
/ 08 апреля 2019

Как правило, я не тестирую уровень веб-API моих контроллеров и фокусируюсь на бизнес-логике для проверки на наличие кода и / или тестирования интеграции моего кода.Я не хочу сказать, что вы не должны тестировать контроллеры, если они содержат какую-то логику, которая нуждается в тестировании, это просто то, что я не тестирую при создании решения.Если мои контроллеры содержат логику, которая требует тестирования, я пытаюсь абстрагировать то, что я могу, в другой слой.Тем не менее, похоже, что документация Microsoft фактически использует код Moq для тестирования классов контроллеров.

https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

...