尽管明确设置了

时间:2017-02-23 19:55:09

标签: c# asp.net asp.net-mvc asp.net-core xunit

我已经写过这个控制器方法和这个测试。

控制器方法:

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?我如何验证状态代码呢?

谢谢!

0 个答案:

没有答案