2015-04-15 17 views
2

我是Web API的新手。我用C#编写的单元测试继承了代码。但是,当我运行单元测试时,无论控制器名称如何,测试都会通过。例如:http://localhost/api/users - >即使用户拼写错误,单元测试也会通过。Web API单元测试未按预期工作

我在控制器下面的代码:

public async Task TestGetUsers() 
{ 
    usersController controller = new usersController(new TestUserRepository()); 
    ApiControllerConfig.SetupControllerForTest(controller, "http://localhost/api/users", HttpMethod.Get); 
    IHttpActionResult result = controller.Get(); 
    HttpResponseMessage message = await result.ExecuteAsync(CancellationToken.None); 
    string content = await message.Content.ReadAsStringAsync(); 
    Assert.IsTrue(content.Length > 0); 
} 

不知道这信息足以告诉我问题出在哪里,但请让我知道如果有更多的信息需要发布。

+0

你使用什么单元测试框架? – jklemmack

回答

-1

您可以直接在测试项目中使用apicontroller,只需添加参考并进行测试即可。

事情是这样的:

public void TestMethod() 
    { 
     var ctr = new MyApiController(); 
     string name = ctr.GetName(); 
     Assert.IsTrue(name == "xpto"); 
    } 
+0

感谢Coastpear作出回应。这是使它工作的唯一方法吗? – gvii

0

您正在阅读从没有发现404请求的内容,那也仍然有内容(告诉你的内容不能被找到)。因此断言内容长度超过0是没有意义的,因为它不区分失败和通过测试。

你应该做的是看状态码(message.StatusCode)并确保它是HttpStatusCode.Ok

我也建议只需将Web Api项目添加为您的单元测试项目的参考 - 这样您就可以直接调用方法,而不必经过HttpClient。欲了解更多(包括测试你的路线),请看my blog