我需要模拟一个接口来调用MSMQ,有没有一种方法可以用Moq来模拟真实的MSMQ场景,队列中有10个消息,我调用模拟函数10次,我可以得到一个预定义的对象,第11次我应该得到一个不同的返回值(例如null)?
发布于 2013-01-17 05:48:06
对于这样的场景,我有时会使用一个简单的计数器:
int callCounter = 0;
var mock = new Mock<IWhatever>();
mock.Setup(a => a.SomeMethod())
.Returns(() =>
{
if (callCounter++ < 10)
{
// do something
}
else
{
// do something else
}
});
发布于 2014-04-01 03:56:57
您还可以设置一个单独的函数来执行此操作。如果需要,您甚至可以向函数传递一个参数:
_serviceMock.Setup(x => x.SomeMethod(It.IsAny<String>())).Returns((String param) => getTimesCalled(param));
https://stackoverflow.com/questions/14368380
复制相似问题