0

我有一个使用引用参数(byte [])的模拟方法调用的问题,该参数在调用后会发生变化:

private Mock<ISocket> mSocket;    
byte[] buffer = new byte[1000];
mSocket.Expects.One.Method(x => x.Receive(null))
.With(buffer).WillReturn(2);

但通话后,我需要更改缓冲区数据。

buffer[0] = 10;
buffer[1] = 20;

如何在不更改生产代码的情况下模拟这种行为?

4

1 回答 1

0

您可以使用方法 .Will 链接到您的 .WillReturn() 来调用自定义操作。

例如,您可以调用 .Will(UpdateBuffer())

然后 UpdateBuffer 方法可以在缓冲区中设置您想要的值。UpdateBuffer 是实现 IAction 接口的类的方法。

看看这个 nmock 页面的 Actions 部分,它都在那里解释了,我不需要重复它。

于 2015-02-18T15:27:36.623 回答