Я получаю эту ошибку от Moq через NUnit, и она не имеет для меня большого смысла.
"Ожидаемый вызов на макет хотя бы один раз, но никогда не выполнялся:x => x.DeleteItem (. $ VB $ Local_item) "
" в Moq.Mock.ThrowVerifyException (ожидается MethodCall, IEnumerable 1 setups, IEnumerable
1 actualCalls, выражение Expression, Times times, Int32 callCount) в Moq.Mock.VerifyCalls (Interceptor targetInterceptor, ожидаемый MethodCall, выражение Expression, времена Times) в Moq.Mock.Verify [T] (Mock mock, Expression 1 expression, Times times, String failMessage)
at Moq.Mock
1.Verify (выражение Expression`1) в PeekABookEditor.UnitTests.ItemBrowsing.Can_Delete_I() в C: \ Projects \ MyProject \ MyProject.UnitTests \ Tests \ ItemBrowsing.vb: строка 167 "
Очень похожий код хорошо работает в C #, поэтому ошибка может быть незначительной и синтаксической с моей стороны.
Вот мой код:
<Test()> _
Public Sub Can_Delete_Item()
'Arrange: Given a repository containing some item...
Dim mockRepository = New Mock(Of IItemsRepository)()
Dim item As New Item With {.ItemID = "24", .Title = "i24"}
mockRepository.Setup(Function(x) x.Items).Returns(New Item() {item}.AsQueryable())
'Act ... when the user tries to delete that product
Dim controller = New ItemsController(mockRepository.Object)
Dim result = controller.Delete(24)
'Assert ... then it's deleted, and the user sees a confirmation
mockRepository.Verify(Sub(x) x.DeleteItem(item))
result.ShouldBeRedirectionTo(New With {Key .action = "List"})
Assert.AreEqual(DirectCast(controller.TempData("message"), String), "i24 was deleted")
End Sub
Кажется, что виновной является строка «mockRepository.Verify (Sub (x) x.DeleteItem (item))»
Любые мысли окак это исправить?
WorkiКод C # не совсем такой, но вот он:
[Test]
public void Can_Delete_Product()
{
// Arrange: Given a repository containing some product...
var mockRepository = new Mock<IProductsRepository>();
var product = new Product { ProductID = 24, Name = "P24"};
mockRepository.Setup(x => x.Products).Returns(
new[] { product }.AsQueryable()
);
// Act: ... when the user tries to delete that product
var controller = new AdminController(mockRepository.Object);
var result = controller.Delete(24);
// Assert: ... then it's deleted, and the user sees a confirmation
mockRepository.Verify(x => x.DeleteProduct(product));
result.ShouldBeRedirectionTo(new { action = "Index" });
controller.TempData["message"].ShouldEqual("P24 was deleted");
}