C# 在NSubstitute中为每个Returns()返回一个新对象
我已经为我的单元测试创建了一个模拟web服务接口的替代品,其中包括以下方法定义:C# 在NSubstitute中为每个Returns()返回一个新对象,c#,unit-testing,nsubstitute,C#,Unit Testing,Nsubstitute,我已经为我的单元测试创建了一个模拟web服务接口的替代品,其中包括以下方法定义: public Message Invoke(Message input) 使用以下方法调用此方法: var reply = webService.Invoke(messageObject) 当我多次调用同一个方法时,它会引发以下异常: System.InvalidOperationException:此消息无法支持该操作,因为它已被读取 以下是我的Nsubstitute模拟代码: outputMessageOb
public Message Invoke(Message input)
使用以下方法调用此方法:
var reply = webService.Invoke(messageObject)
当我多次调用同一个方法时,它会引发以下异常:
System.InvalidOperationException:此消息无法支持该操作,因为它已被读取
以下是我的Nsubstitute模拟代码:
outputMessageObj = GetResponseMessage()
wsMock.Invoke(Arg.Any<Message>()).Returns(outputMessageObj)
outputMessageObj=GetResponseMessage()
wsMock.Invoke(Arg.Any()).Returns(outputMessageObj)
如何确保每次调用时都返回一个新的outputMessage对象?明白了,只需使用lambda调用一个每次都返回一个新消息对象的方法:
wsMock.Invoke(Arg.Any<Message>()).Returns(x => GetResponseMessage())
wsMock.Invoke(Arg.Any()).Returns(x=>GetResponseMessage())
如果要按顺序返回特定值,可以将要返回的所有值传递给Returns
方法<代码>wsMock.Invoke(null).ReturnsForAnyArgs(response1,response2,response3)代码>