How reliable is Verify() in Moq?

Posted by matthewayinde on Stack Overflow See other posts from Stack Overflow or by matthewayinde
Published on 2010-04-08T08:35:52Z Indexed on 2010/04/08 8:43 UTC
Read the original article Hit count: 371

Filed under:
|
|
|
|

I'm only new to Unit Testing and ASP.NET MVC. I've been trying to get my head into both using Steve Sanderson's "Pro ASP.NET MVC Framework". In the book there is this piece of code: public class AdminController : Controller { ...

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(Product product, HttpPostedFileBase image)
    {
      ...
       productsRepository.SaveProduct(product);

       TempData["message"] = product.Name + " has been saved.";
       return RedirectToAction("Index");
    }

}

That he tests like so:

    [Test]
public void Edit_Action_Saves_Product_To_Repository_And_Redirects_To_Index()
{
    // Arrange
    AdminController controller = new AdminController(mockRepos.Object);

    Product newProduct = new Product();

    // Act
    var result = (RedirectToRouteResult)controller.Edit(newProduct, null);

    // Assert: Saved product to repository and redirected
    mockRepos.Verify(x => x.SaveProduct(newProduct));
    Assert.AreEqual("Index", result.RouteValues["action"]);
}

THE TEST PASSES.

So I intensionally corrupt the code by adding "productsRepository.DeleteProduct(product);" after the "SaveProduct(product);" as in:

            ...
       productsRepository.SaveProduct(product);
       productsRepository.DeleteProduct(product);
            ...

THE TEST PASSES.(i.e Condones a calamitous [hypnosis + intellisense]-induced typo :) )

Could this test be written better? Or is there something I should know? Thanks a lot.

© Stack Overflow or respective owner

Related posts about moq

Related posts about verify