gpt4 book ai didi

c# - 当它返回 IHttpActionResult 时,我如何对 web api 操作方法进行单元测试?

转载 作者:IT王子 更新时间:2023-10-29 03:33:17 26 4
gpt4 key购买 nike

假设这是我的操作方法

public IHttpActionResult Get(int id)
{
var status = GetSomething(id);
if (status)
{
return Ok();
}
else
{
return NotFound();
}
}

测试会

var httpActionResult = controller.Get(1);

在此之后我如何检查我的 http 状态代码?

最佳答案

这里 Ok() 只是类型 OkResult 的一个助手,它将响应状态设置为 HttpStatusCode.Ok...所以你可以只检查你的操作结果的实例是否是 OkResult...一些例子(用 XUnit 编写):

// if your action returns: NotFound()
IHttpActionResult actionResult = valuesController.Get(10);
Assert.IsType<NotFoundResult>(actionResult);

// if your action returns: Ok()
actionResult = valuesController.Get(11);
Assert.IsType<OkResult>(actionResult);

// if your action was returning data in the body like: Ok<string>("data: 12")
actionResult = valuesController.Get(12);
OkNegotiatedContentResult<string> conNegResult = Assert.IsType<OkNegotiatedContentResult<string>>(actionResult);
Assert.Equal("data: 12", conNegResult.Content);

// if your action was returning data in the body like: Content<string>(HttpStatusCode.Accepted, "some updated data");
actionResult = valuesController.Get(13);
NegotiatedContentResult<string> negResult = Assert.IsType<NegotiatedContentResult<string>>(actionResult);
Assert.Equal(HttpStatusCode.Accepted, negResult.StatusCode);
Assert.Equal("some updated data", negResult.Content);

关于c# - 当它返回 IHttpActionResult 时,我如何对 web api 操作方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com