【发布时间】:2019-04-04 15:27:00
【问题描述】:
我有一个用 .NET Core 编写的 API,并使用 xUnit 对其进行测试。
我在 API 中的方法是:
[HttpDelete("api/{id}")]
public async Task<IActionResult> DeleteUserId(string id)
{
try
{
//deleting from db
}
catch (Exception ex)
{
return StatusCode(500, ex.Message);
}
}
当 null/empty id 传递给此方法时,我想编写一个单元测试。
我的测试用例如下:
[Fact]
public void DeleteUserId_Test()
{
//populate db and controller here
var response= _myController.DeleteUserId(""); //trying to pass empty id here
// Assert
Assert.IsType<OkObjectResult>(response);
}
如何在此处检查从我的控制器方法调用返回的状态代码 500。类似的东西
Assert.Equal(500, response.StatusCode);
在调试时,我可以看到响应具有 Result 返回类型 (Microsoft.AspNetCore.Mvc.ObjectResult),其 StatusCode 为 500。
但是当我尝试这样做时:
response.StatusCode
它给我带来了错误:
“IActionResult”不包含“StatusCode”的定义,并且找不到接受“IActionResult”类型的第一个参数的扩展方法“StatusCode”(您是否缺少 using 指令或程序集引用?)
我该如何解决这个问题?
【问题讨论】:
-
将响应转换为所需的类型并访问成员以进行断言。
标签: c# unit-testing asp.net-core xunit xunit.net