gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:38:22 25 4
gpt4 key购买 nike

我正在尝试为 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 Exception。

感谢任何帮助。

最佳答案

这是配置/集成问题。

您可以在 issue in ASP.NET Core repo 中看到一些附加信息和 another one在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;

关于c# - asp.net core 中的 TryValidateModel 在执行单元测试时抛出空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51773391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com