我知道以前曾经问过这个问题,但我找不到......
假设我有一个名为HomeController的控制器,它有一个名为Login的操作。
我的登录操作采用名为LoginFormViewModel的模型。
在我的行动中,我可以编写类似的代码;
public ActionResult Login(LoginFormViewModel loginFVM)
{
if (ModelState.IsValid)
{
return RedirectToAction("provider");
}
return View(loginFVM);
}
我想要的是编写一个测试,它允许我传入一个表单视图模型并检测它是否有效,从而断言结果。
修改
我想我可能会对这个问题感到困惑。
在我的模型上,我有一些验证,检查用户名是否已填写,密码是否符合我们的要求。
所以我正在测试的是模型验证是否正常,我认为我是通过执行View来实现的,因为现实生活中会发生这种情况。
所以基本上我要创建一个模型,该模型应该无法通过ModelState.IsValid测试,我希望能够在我的测试中进行测试。
如果有更好的方式,那么我很乐意拥有它。
答案 0 :(得分:1)
如果您正在测试以确保您的模型正确传递到视图:
[Test]
public void Login_Should_Set_Model()
{
var controller = new HomeController();
var model = CreateMockLoginFormViewModel();
var result = controller.Login(model) as ViewResult;
Assert.AreEqual(model, result.ViewData.Model);
}
<强>更新强> 由于OP有兴趣测试MVC是否验证模型,我发现此链接可能有所帮助:Testing DataAnnotation-based validation in ASP.NET MVC