在ASP.NET Core MVC中,ControllerBase.Problem()
方法用于生成符合RFC 7231的错误响应。单元测试核心MVC控制器操作是否调用ControllerBase.Problem()
可以通过以下步骤进行:
假设我们有一个简单的控制器操作,当某些条件不满足时调用Problem()
方法。
public class SampleController : ControllerBase
{
public IActionResult GetSampleData(int id)
{
if (id <= 0)
{
return Problem(statusCode: StatusCodes.Status400BadRequest, title: "Invalid ID");
}
// 其他逻辑...
return Ok(new { Data = "Some data" });
}
}
使用xUnit和Moq框架来编写单元测试。
using Microsoft.AspNetCore.Mvc;
using Moq;
using Xunit;
public class SampleControllerTests
{
[Fact]
public void GetSampleData_ShouldReturnProblem_WhenIdIsInvalid()
{
// Arrange
var controller = new SampleController();
// Act
var result = controller.GetSampleData(-1);
// Assert
var problemDetailsResult = Assert.IsType<ProblemDetailsResult>(result);
Assert.Equal(400, problemDetailsResult.StatusCode);
Assert.Equal("Invalid ID", problemDetailsResult.Problem.Title);
}
[Fact]
public void GetSampleData_ShouldReturnOk_WhenIdIsValid()
{
// Arrange
var controller = new SampleController();
// Act
var result = controller.GetSampleData(1);
// Assert
var okResult = Assert.IsType<OkObjectResult>(result);
Assert.Equal("Some data", ((dynamic)okResult.Value).Data);
}
}
如果在测试中发现Problem()
方法没有被正确调用,可能的原因包括:
Problem()
方法。Problem()
。通过上述步骤和方法,可以有效地单元测试MVC控制器操作是否正确调用了ControllerBase.Problem()
方法。
领取专属 10元无门槛券
手把手带您无忧上云