我正在尝试编写用于Asp.Net Core Web API的ModelState验证的单元测试。

我读过,最好的方法是使用TryValidateModel函数。但是,每次我运行单元测试时,它都会引发NullReference异常。
我发现很多文章都建议使用controller.ModelState.AddModelError("",""),但是对此我并不感兴趣,因为我认为它超出了实际模型验证的目的。

[TestMethod]
public void TestMethod1()
{
    var controller = new TestController();

    controller.Post(new Model());
}


public class TestController : Controller
{
    public IActionResult Post(Model model)
    {
        bool b = TryValidateModel(model)

        return Ok();
    }
}
TryValidateModel(model)始终从TryValidateModel(model, prefix)函数抛出NullReference异常。

感谢任何帮助。

最佳答案

这是配置/集成问题。

您可以在github上的issue in ASP.NET Core repoanother one中看到一些其他信息。
但我可以告诉您最简单的修复方法(我曾经使用过)

        var objectValidator = new Mock<IObjectModelValidator>();
        objectValidator.Setup(o => o.Validate(It.IsAny<ActionContext>(),
                                          It.IsAny<ValidationStateDictionary>(),
                                          It.IsAny<string>(),
                                          It.IsAny<Object>()));
        controller.ObjectValidator = objectValidator.Object;

关于c# - asp.net核心中的TryValidateModel在执行单元测试时抛出Null Reference Exception,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51773391/

10-13 07:37