title: Testing ModelState is always valid in asp.net mvc
body: <p>When testing my controller's actions the ModelState is always valid.</p>
  
  <pre><code>public class Product
  {
      public int Id { get; set; }
  
      [Required]
      [StringLength(10)]
      public string Name { get; set; }
  
      [Required]
      public string Description { get; set; }
  
      [Required]
      public decimal Price { get; set; }
  }
  </code></pre>
  
  <p>And my controller.</p>
  
  <pre><code>public class ProductController : Controller
  {
        [HttpPost]
        public ActionResult Create(Product product)
        {
              if (ModelState.IsValid)
              {
                     // Do some creating logic...
                     return RedirectToAction("Display");
              }
  
               return View(product);              
        }
   }
  </code></pre>
  
  <p>And test:  </p>
  
  <pre><code>[Test]
  public TestInvalidProduct()
  {
       var product = new Product();
       var controller = new ProductController();
       controller.Create(product);
       //controller.ModelState.IsValid == true
  }
  </code></pre>
  
  <p>Why the modelState is valid when the product doesn't have a name, Description and price?</p>