有没有可能修改被模拟方法的调用参数?特别是我想将以下示例中的
buffer
更改为预填充的字节数组。
示例:
int MockedClass.Read(byte[] buffer, int offset, int count)
说明:
调用 Read
会从 offset
开始读取 count
字节,并将其加载到提供的字节数组 buffer
中。
现在我想在应用程序代码中调用 Read
后填充缓冲区。这是否可能?
如果可以,如何进行连续调用 Read
?如果可能的话,我希望每次调用都返回一个不同的缓冲区。
编辑:
使用以下命令的 Setup
:
MockedClass.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<int>()).Callback( (byte[] buffer, int offset, int count) => buffer[0] = 0xAA);
当执行单元测试时,我遇到了奇怪的问题:一旦调用 Read
并执行委托代码(buffer [0] = 0xAA
),调试器显示 buffer
实际上是 null
,并且单元测试执行在执行此命令后停止。我的语法是否有误或这是一个错误?
It.IsAny<byte[]>()
进行匹配,但调用者仍然必须提供值。 - Mark Seemann