我有一个带有以下声明的界面:
void MapServiceMessages(IEnumerable<ServiceMessage> serviceMessages, List<Message> responseMessages);
我想模拟这个方法,我发送一个返回消息类型列表的servicemessage列表。由于它是void类型,那么我该如何模拟这个方法。
我不想改变我的宣言既不是定义。
当然我可以选择将void更改为List然后使用(...)。返回(mychoiceofmessages)....
我想与社区核实他们是否遇到过这样的问题和更好的解决方案。
谢谢,
答案 0 :(得分:3)
Returns()可用于获取返回a的成员的回调 价值,但对于无效成员,我们需要一种不同的技术,因为我们 无法在void返回上调用方法。对于这些情况,我们可以使用 When..Do语法
public interface IFoo {
void SayHello(string to);
}
[Test]
public void SayHello() {
var counter = 0;
var foo = Substitute.For<IFoo>();
foo.When(x => x.SayHello("World"))
.Do(x => counter++);
foo.SayHello("World");
foo.SayHello("World");
Assert.AreEqual(2, counter);
}