我正在学习有关使用Moq进行单元测试的知识,并且我有一个非常简单的Webapi控制器,只能返回OK状态。
public class TestController : ApiController
{
[HttpGet]
[Route("api/v1/test")]
public HttpResponseMessage GetHealth()
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
我不知道如何使用Moq对其进行测试,我将不胜感激。
答案 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代码来测试控制器类。