如何在C#ASP.NET中编写用于检查条件语句中的错误请求的单元测试



我有一个控制器,它有一个简单的条件语句,检查一个值,如果该值与预期值不匹配,则返回BadRequest。

public async Task<IActionResult> SendCarDetails(string carValue)
{
try
{
if (carValue== "0")
{
return BadRequest("Car value cannot be 0");
}
}
catch (Exception ex)
{
return StatusCode(500);
}
}

为了测试这个简单的条件,我写了一个单元测试,尽管它有效,但我觉得它与上面的方法有点脱节,因此不足以作为测试。这将值定义为0,然后对其进行检查,然后创建一个新的BadRequestResult,如果response400匹配,则测试通过。

[TestMethod]
public void SendCarDetails_Returns_400_When_Zero()
{
string paymentValue = "0";
if (paymentValue == "0") 
{
var response = new BadRequestResult();
Assert.AreEqual(StatusCodes.Status400BadRequest, response.StatusCode);
}
}

有人能指导我为我的控制器状况写一个单元测试吗?或者我的方法是否准确?

上面显示的测试与要测试的控制器操作断开连接。

理想情况下,您希望创建测试对象的实例,并调用目标成员来断言预期的行为

例如

[TestMethod]
public async Task SendCarDetails_Returns_400_When_Zero() {
//Arrange
MyController subject = new MyController();
string paymentValue = "0";

//Act
IActionResult result = await subject.SendCarDetails(paymentValue);
BadRequestObjectResult actual = result as BadRequestObjectResult ;

//Assert
Assert.IsNotNull(actual);
}

最新更新