Reputation: 428
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?
Upvotes: 9
Views: 3231
Reputation: 14551
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.Upvotes: 9