I am trying to set up exceptions for a method that is called twice in a row with different parameters. Like this:
var adapter = new Mock<IKeyAdapter>();
adapter.Setup(x => x.ImportKey(It.IsAny<Guid>(), key, It.IsAny<string>(), publicTicket)).Returns(Guid.NewGuid());
adapter.Setup(x => x.ImportKey(It.IsAny<Guid>(), key, It.IsAny<string>(), privateTicket)).Returns(Guid.Empty);
I wan't the first to pass and the second to fail. Currently it seems that the second setup overwrites the first.
Is this possible with Moq?
You are correct that the second expectation is overwriting the first. This appears to be a current limitation. Some workarounds have been devised as follows:
IExpect.Returns
to take an expression rather than a value as described here, and elaborated on here and here.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