C# web API单元测试未按预期工作
我不熟悉Web API。我继承了用c编写的单元测试代码。但是,当我运行单元测试时,无论控制器名称如何,测试都会通过。例如:->即使用户拼写错误,单元测试也会通过 控制器中有以下代码:C# web API单元测试未按预期工作,c#,unit-testing,asp.net-web-api,C#,Unit Testing,Asp.net Web Api,我不熟悉Web API。我继承了用c编写的单元测试代码。但是,当我运行单元测试时,无论控制器名称如何,测试都会通过。例如:->即使用户拼写错误,单元测试也会通过 控制器中有以下代码: public async Task TestGetUsers() { usersController controller = new usersController(new TestUserRepository()); ApiControllerConfig.SetupControllerForT
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);
}
不确定这些信息是否足以告诉我问题所在,但如果需要发布更多信息,请告诉我。您可以在测试项目中直接使用ApicController,只需添加引用并测试它 大概是这样的:
public void TestMethod()
{
var ctr = new MyApiController();
string name = ctr.GetName();
Assert.IsTrue(name == "xpto");
}
您可以在测试项目中直接使用ApicController,只需添加引用并测试它 大概是这样的:
public void TestMethod()
{
var ctr = new MyApiController();
string name = ctr.GetName();
Assert.IsTrue(name == "xpto");
}
您正在读取404 not found请求中的内容:该请求仍然有内容告诉您找不到内容。因此,断言内容长度超过0毫无意义,因为它无法区分失败的测试和通过的测试 您应该做的是查看statuscode消息.statuscode并确保它是HttpStatusCode.Ok
我还建议您只添加WebAPI项目作为对单元测试项目的引用,这样您就可以直接调用这些方法,而不必通过HttpClient。有关这方面的更多信息,包括测试您的路由,请查看。您正在读取404未找到请求中的内容:该请求仍将有内容告诉您找不到内容。因此,断言内容长度超过0毫无意义,因为它无法区分失败的测试和通过的测试 您应该做的是查看statuscode消息.statuscode并确保它是HttpStatusCode.Ok
我还建议您只添加WebAPI项目作为对单元测试项目的引用,这样您就可以直接调用这些方法,而不必通过HttpClient。有关这方面的更多信息,包括测试路由,请查看。您使用的是什么单元测试框架?您使用的是什么单元测试框架?感谢Coastpear的回复。这是唯一可行的方法吗?谢谢你的回复。这是唯一可行的方法吗?