Skip to main content
 首页 » 编程设计

c#之Web API 单元测试未按预期工作

2024年01月13日31jiqing9006

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

我在 Controller 中有以下代码:

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); 
}   

不确定此信息是否足以告诉我问题出在哪里,但如果需要发布更多信息,请告诉我。

请您参考如下方法:

您正在阅读来自 404 未找到请求的内容:该请求仍然有内容(告诉您找不到该内容)。因此断言内容长度超过 0 是没有意义的,因为它不区分失败和通过的测试。

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

我还建议只添加 Web Api 项目作为对单元测试项目的引用——这样您就可以直接调用方法,而不必通过 HttpClient。有关这方面的更多信息(包括测试您的路线),请查看 my blog .