为NSubstitute中的每个Returns()返回一个新对象

时间:2018-01-03 21:10:52

标签: c# unit-testing nsubstitute

我创建了一个替代品,用于模拟我的单元测试的Web服务接口,其中包括以下方法定义:

public Message Invoke(Message input)

使用以下方法调用此方法:

var reply = webService.Invoke(messageObject)

当我对同一个方法进行多次调用时,它会抛出以下异常:

System.InvalidOperationException:此消息不支持该操作,因为它已被读取。

这是我的Nsubstitute模拟代码:

outputMessageObj = GetResponseMessage()
wsMock.Invoke(Arg.Any<Message>()).Returns(outputMessageObj)

如何确保每次调用时都返回一个新的outputMessage对象?

1 个答案:

答案 0 :(得分:2)

知道了,只需使用lambda来调用每次都返回一个新Message对象的方法:

wsMock.Invoke(Arg.Any<Message>()).Returns(x => GetResponseMessage())