It.IsAny <Cart>(),It.IsAny <ShippingDetails>(),Times.Never().他们在做什么?

Som*_*ser 3 c# unit-testing moq mocking

我想知道你是否可以帮我理解以下内容:

        mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), 
                                        It.IsAny<ShippingDetails>()),
                         Times.Never());
Run Code Online (Sandbox Code Playgroud)

测试方法:

[TestMethod]
public void Cannot_Checkout_Empty_Cart()
{
    // Arrange - create a mock order processor
    Mock<IOrderProcessor> mock = new Mock<IOrderProcessor>();

    // Arrange - create an empty cart
    Cart cart = new Cart();

    // Arrange - create shipping details
    ShippingDetails shippingDetails = new ShippingDetails();

    // Arrange - create an instance of the controller
    CartController target = new CartController(null, mock.Object);

    // Act
    ViewResult result = target.Checkout(cart, shippingDetails);

    // Assert - check that the order hasn't been passed on to the processor
    mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Never());

    // Assert - check that the method is returning the default view
    Assert.AreEqual("", result.ViewName);

    // Assert - check that we are passing an invalid model to the view
    Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
}
Run Code Online (Sandbox Code Playgroud)

Wik*_*hla 5

It.IsAny<Cart>匹配Cart类型的任何值.既然你有Times.Never,你实际上验证了从未使用两个参数(Card,ShippingDetails)调用该方法.