我创建了一个替代品,用于模拟我的单元测试的Web服务接口,其中包括以下方法定义:
public Message Invoke(Message input)
使用以下方法调用此方法:
var reply = webService.Invoke(messageObject)
当我对同一个方法进行多次调用时,它会抛出以下异常:
System.InvalidOperationException:此消息不支持该操作,因为它已被读取。
这是我的Nsubstitute模拟代码:
outputMessageObj = GetResponseMessage()
wsMock.Invoke(Arg.Any<Message>()).Returns(outputMessageObj)
如何确保每次调用时都返回一个新的outputMessage对象?
答案 0 :(得分:2)
知道了,只需使用lambda来调用每次都返回一个新Message对象的方法:
wsMock.Invoke(Arg.Any<Message>()).Returns(x => GetResponseMessage())