我已经写过这个控制器方法和这个测试。
控制器方法:
public async Task<IActionResult> Metric(string type, string source)
{
// Check existence ...
var model = await _context
.Metrics
.FirstAsync(mt => mt.Type == metricType.AsInt() && mt.Source == source);
Response.StatusCode = HttpStatusCode.OK.AsInt();
return View(model);
}
测试:
[Fact]
public async Task MetricExistsTest()
{
// Arrange ...
// Act
var result = await _controller.Metric(Metrics.CpuLoad.ToString(), "source-1");
// Assert
var viewResult = Assert.IsType<ViewResult>(result);
Assert.Equal(HttpStatusCode.OK.AsInt(), viewResult.StatusCode.Value);
var model = Assert.IsAssignableFrom<Metric>(
viewResult.ViewData.Model
);
}
现在问题在于Assert.Equal(HttpStatusCode.OK.AsInt(), viewResult.StatusCode.Value);
。 viewResult.StatusCode
确实是null
。如果我评论这一行,一切正常。
我做错了什么?为什么是null
?我是否正确设置了Response.StatusCode
?我如何验证状态代码呢?
谢谢!