Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不调用控制器的情况下测试ModelState_C#_Asp.net_Asp.net Mvc_Unit Testing_Modelstate - Fatal编程技术网

C# 如何在不调用控制器的情况下测试ModelState

C# 如何在不调用控制器的情况下测试ModelState,c#,asp.net,asp.net-mvc,unit-testing,modelstate,C#,Asp.net,Asp.net Mvc,Unit Testing,Modelstate,我不知道我的问题是否有任何意义(我是测试新手),但我想我可能希望在不调用控制器的情况下检查ModelState。 我的控制器示例: public ActionResult New(ClientModel client){ try{ if (ModelState.IsValid){ var result = _clienteAppService.Add(client); if (result.IsValid){ re

我不知道我的问题是否有任何意义(我是测试新手),但我想我可能希望在不调用控制器的情况下检查ModelState。 我的控制器示例:

public ActionResult New(ClientModel client){
    try{
       if (ModelState.IsValid){
         var result = _clienteAppService.Add(client);
         if (result.IsValid){
            return RedirectToAction("Index", new { id = client.ClienteId});
         }
         foreach (var error in result.Erros)
            ModelState.AddModelError(erro.Name, erro.Message);
       }
    }
    catch (Exception e){
       ModelState.AddModelError(string.Empty, e.Message);
    }
    var errors = ModelState.Select(x => x.Value.Errors)
                 .Where(y => y.Count > 0).ToList();
    ViewData["erros"] = errors;
    return View(client);
}

我的意思是,我不想在控制器中发生所有我正在做的事情,所以就像在本例中添加一个新客户机一样,只需检查我发送的模型是否正确


我想这样做是因为在我的例子中,调用控制器在测试中相当耗时,我不想在每个场景中调用它。

如果您的问题是“如何对控制器方法进行单元测试并确保在ClientModel上进行验证”,如果控制器中的操作成本很高,那么只需执行一个简单的
如果(ModelState.IsValid)返回…
,这应该可以避免您必须执行控制器的其余部分。但这是一种黑客行为,可能不是您想要的。不过,您所述问题的超级快速解决方案。如果您的问题是“如何对控制器方法进行单元测试并确保在ClientModel上进行验证?”如果控制器内的操作成本很高,那么只需执行一个简单的
If(ModelState.IsValid)返回…
,这应该可以避免您必须执行控制器的其余部分。但这是一个黑客行为,可能不是您想要的。不过,您所述问题的超级快速解决方案。