Des tests unitaires sur le MVC de validation

Comment puis-je tester que mon contrôleur de l'action est de mettre la correction d'erreurs dans le ModelState lors de la validation d'une entité, lorsque je suis en utilisant DataAnnotation de validation dans MVC 2 Extrait 1?

Un peu de code pour illustrer. Tout d'abord, l'action:

    [HttpPost]
    public ActionResult Index(BlogPost b)
    {
        if(ModelState.IsValid)
        {
            _blogService.Insert(b);
            return(View("Success", b));
        }
        return View(b);
    }

Et voici un échec de test de l'unité qui, je pense, devrait passer mais n'est-ce pas (à l'aide de MbUnit & Moq):

[Test]
public void When_processing_invalid_post_HomeControllerModelState_should_have_at_least_one_error()
{
    //arrange
    var mockRepository = new Mock<IBlogPostSVC>();
    var homeController = new HomeController(mockRepository.Object);

    //act
    var p = new BlogPost { Title = "test" };            //date and content should be required
    homeController.Index(p);

    //assert
    Assert.IsTrue(!homeController.ModelState.IsValid);
}

Je pense en plus à cette question, devrait j'essai de validation, et que je devrais tester de cette façon?

  • N'est-ce pas var p = nouvel article sur le Blog { Title = "test" }; plus Organiser de Loi?
  • Affirmer.IsFalse(homeController.ModelState.IsValid);