Я думаю, что вы, возможно, неправильно истолковываете цель методов .Verify ().
Он проверяет, что данный метод был вызван с ожидаемым значением.
На странице 187 книги Стив говорит' Обратите внимание, как он использует метод Moqs .Verify (), чтобы убедиться, что AdminController действительно вызвал DeleteProduct () с правильным параметром. '
Так что в вашем случае тест проходит как онэто просто проверка вызова, а не функциональность.
Поскольку в ходе работы с книгой следят за TDD, сначала необходимо добавить
productsRepository.DeleteProduct(product);
к тесту
// Assert: Saved product to repository, then deleted and redirected
mockRepos.Verify(x => x.SaveProduct(newProduct))
mockRepos.Verify(x => x.DeleteProduct(newProduct));
Assert.AreEqual("Index", result.RouteValues["action"]);
, а затем добавляется к коду
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product product, HttpPostedFileBase image)
{
...
productsRepository.SaveProduct(product);
productsRepository.DeleteProduct(product);
...