MVC4で単体テストを学び始めています。
これは私のコントローラーです。
public class AccountController : Controller
{
public ActionResult Register(User user)
{
if (ModelState.IsValid)
{
return View("RegistrationSuccessful");
}
return View("Register");
}
}
そして、これがテストです。
public class AccountControllerTests
{
[TestMethod]
public void invalid_registration_details_should_show_registration_form_again()
{
var controller = new AccountController();
var user = new User();
user.Name = null;
var result = controller.Register(user) as ViewResult;
Assert.AreEqual("Register", result.ViewName);
}
}
そしてこれがモデル。
public class User
{
[Required]
public string Name { get; set; }
}
controller.Register(user) を呼び出すと、フレームワークではなく自分でコントローラーをインスタンス化しているため、モデル バインダーが表示されないと思います。したがって、ModelState.IsValid はデフォルトで true になると思います。
これをテストするにはどうすればよいですか?単体テストでモデルの検証をトリガーするにはどうすればよいですか?