【发布时间】:2011-01-12 03:00:32
【问题描述】:
是否可以修改模拟方法的调用参数?特别是,我希望将以下示例中的 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 并且单元测试执行此命令后停止执行。是我的语法有问题还是这是一个错误?
【问题讨论】:
标签: c# unit-testing moq