C# 单元测试中如何强制TryUpdateModel返回false

C# 单元测试中如何强制TryUpdateModel返回false,c#,asp.net-mvc,unit-testing,model,C#,Asp.net Mvc,Unit Testing,Model,在asp.net mvc web应用程序的单元测试中,我需要强制TryUpdateModel返回false,但它总是返回true 我的控制器操作是: public JsonResult SaveStep(string path, string title, string definitionOfDone, int limit, bool isNewStep) { Step step = new Step(); if (TryUpdateModel(step)){

在asp.net mvc web应用程序的单元测试中,我需要强制TryUpdateModel返回false,但它总是返回true

我的控制器操作是:

public JsonResult SaveStep(string path, string title, string definitionOfDone, int limit, bool isNewStep)
{
    Step step = new Step();

    if (TryUpdateModel(step)){
        // code    
    }
}

只需在单元测试的排列阶段向模型状态添加一个错误:

_controllerUnderTest.ModelState.AddModelError("key", "error message");

现在,当您在单元测试的act阶段调用
\u controllerUnderTest.SaveStep
时,ModelState.IsValid将返回false。

在我的例子中,我试图在确保ModelState.IsValid为true后调用TryUpdateModel,因此向ModelState添加错误没有帮助。在这种情况下,帮助我的是在视图模型中找到一个不可为null的字段,在安排单元测试时将该字段设置为null,并且TryUpdateModel返回false,即使在单元测试中ModelState.IsValid返回true时也是如此。

您对模型有哪些验证属性?一个完全有效的问题被两次否决的原因是什么?