开发者

Moq expectations on the same method twice in a row

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 secon开发者_如何转开发d 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:

  • Moq Sequences which can obtained here at github.
  • Overloading IExpect.Returns to take an expression rather than a value as described here, and elaborated on here and here.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜