带有数组参数的模拟方法,该参数将在调用后更改
mocking method with an array argument which will change after call
我在使用引用参数 (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;
如何在不更改生产代码的情况下模拟此行为?
您可以使用方法 .Will 链接到您的 .WillReturn() 来调用自定义操作。
例如,您可以调用 .Will(UpdateBuffer())
然后 UpdateBuffer 方法可以在缓冲区中设置您想要的值。
UpdateBuffer 是 class 上实现 IAction 接口的方法。
看看this nmock page的动作部分,那里都有解释,我就不用重复了。
我在使用引用参数 (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;
如何在不更改生产代码的情况下模拟此行为?
您可以使用方法 .Will 链接到您的 .WillReturn() 来调用自定义操作。
例如,您可以调用 .Will(UpdateBuffer())
然后 UpdateBuffer 方法可以在缓冲区中设置您想要的值。 UpdateBuffer 是 class 上实现 IAction 接口的方法。
看看this nmock page的动作部分,那里都有解释,我就不用重复了。