使用“ Moq”测试webapi控制器

时间:2019-04-08 14:19:10

标签: c# owin

我正在学习有关使用Moq进行单元测试的知识,并且我有一个非常简单的Webapi控制器,只能返回OK状态。

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

我不知道如何使用Moq对其进行测试,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

我认为不需要 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));
}

答案 1 :(得分:0)

通常,我不测试控制器的Web API级别,而是专注于对代码进行模拟和/或集成测试的业务逻辑。我不想说如果控制器包含一些需要测试的逻辑,则您不应该对其进行测试,这只是我在构建解决方案时不进行测试的东西。如果我的控制器包含需要测试的逻辑,我会尝试将我可以提取的内容抽象到另一层。但是,看起来Microsoft文档实际上使用Moq代码来测试控制器类。

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