我正在尝试为 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(使用前将#替换为@)