asp.net core 中的 TryValidateModel 在执行单元测试时抛出空引用异常

2024-01-03

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

我读到,最好的方法是使用TryValidateModel功能。但是,每次运行单元测试时,它都会抛出 NullReferenceException。
我发现很多文章都建议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)总是抛出 NullReference 异常TryValidateModel(model, prefix)功能。

感谢任何帮助。


这是配置/集成问题。

您可以在中看到一些附加信息ASP.NET Core 存储库中的问题 https://github.com/aspnet/Mvc/issues/3586 and 另一个 https://github.com/aspnet/Mvc/issues/6000在 github 上。 但我可以告诉你最简单的解决办法(我用过一次)

        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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net core 中的 TryValidateModel 在执行单元测试时抛出空引用异常 的相关文章

随机推荐