forum

Home / DeveloperSection / Forums / How to do Unit tests on MVC validation

How to do Unit tests on MVC validation

Anonymous User 1968 21-Nov-2014

How can I test that my controller action is putting the correct errors in the ModelState when validating an entity, when I'm using DataAnnotation validation in MVC 2 Preview 1?

Some code to illustrate. First, the action:

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

And here's a failing unit test that I think should be passing but isn't (using 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);
}

I guess in addition to this question, should I be testing validation, and should I be testing it in this way?


Updated on 22-Nov-2014
I am a content writter !

Can you answer this question?


Answer

1 Answers

Liked By