Rhino Mocks:在没有“ref”关键字的情况下填充存根中的数组参数

时间:2012-01-17 09:16:02

标签: rhino-mocks

在填充没有ref关键字的数组参数时遇到问题。

签名:

int ReceiveData(ref byte[] data)

这有效:

byte[] dataParameter = new byte[8];
byte[] testData = new byte[] { 1, 2, 3, 4 };
this.mockObject.Stub(t => t.ReceiveData(ref dataParameter)).OutRef(testData).Return(4);

调用“ReceiveData”后,“data”参数的值为{1,2,3,4}。 如何填写此签名的数据参数:

int ReceiveData(byte[] data)

OutRef()不适用于此。任何的想法? 感谢...

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并使用'Callback'方法找到了我的解决方案。在我的例子中,输入缓冲区参数没有被声明为'ref',所以可能不适合你,但我认为它应该可行。

例如;

mockObject.Expect(x => x.ReceiveData(Arg<byte[]>.Is.NotNull)).Callback((byte[] buffer) =>
{
   Array.Copy(outBytes, 0, buffer, 0, outBytes.Length);
   return true;
}).Return(10); // return some number of bytes received, and set the bytes in the callback