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: 374
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