可以测试方法参数上必需的注释吗?

Required annotation on method parameters can be tested?

[Required] 注释在 运行 时工作正常,但我可以用单元测试来测试它吗?

我试过调试,但是好像是直接跳进去测试的,因为方法是直接调用的。

测试:

var result = (StatusCodeResult)await this.Sut.Values(1, null);

result.StatusCode.Should().Be(HttpStatusCode.BadRequest);

方法:

public async Task<IActionResult> Values(int identifier, [Required] SomeType query)
{
    var readResult= await this.resultProvider.GetValues(identifier, query);
    if (readResult.Failed)
    {
        var error = new ErrorRepresentation(resultReadResult.Message);

        return this.StatusCode(error.StatusCode);
    }

    return this.Ok(readResult.Value);
}

我应该得到带有 400 代码的 http 响应,但我得到 404 未找到。

我的猜测是它正在寻找一个替代方法,该方法的第二个参数是可选的但没有找到它,因此是 404。

这是路由问题,请尝试为您的测试添加自定义路由。