Hi say I have a method with the following signature:
public void GeneratePaymentAdvise(IList<int> paymentIds)
and this is called by another method:
public void UpdatePaymentStatus(IList<int> paymentIds, IPaymentLogic paymentLogic)
{
...
paymentLogic.GeneratePaymentStatus(paymentIds);
...
}
So in a unit test I want to make sure this was called. Using moq:
var mockPaymentLogic = new Mock<PaymentLogic>();
UpdatePaymentStatus(new List<int> { 2, 3 }, mockPaymentLogic.Object);
mockPaymentLogic.Verify(x => x.GeneratePaymentStatus(It.IsAny<IList<int>>());
So this would work fine and checks that GeneratePaymentStatus is called but only that was called with any old list of ints.
Is there a way to rewrite this so it tests that GeneratePaymentStatus was called with a list of ints containing 2 and 3?
Something like that:
mockPaymentLogic.Verify(x => x.GeneratePaymentStatus(It.Is<IList<int>>(l => l.Contains(2) && l.Contains(3))));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With