我有一个方法,其参数之一为 out,我找到了有关如何在 NMock2 中模拟它的参考。然而,似乎 NMock3 的重大变化打破了 NMock2 的解决方案。这是我的方法的接口签名:
IEnumerable<Video> DeletedVideos(int index, int pageSize, out int totalCount);
我有一个方法,其参数之一为 out,我找到了有关如何在 NMock2 中模拟它的参考。然而,似乎 NMock3 的重大变化打破了 NMock2 的解决方案。这是我的方法的接口签名:
IEnumerable<Video> DeletedVideos(int index, int pageSize, out int totalCount);
这是我经过反复试验找到的解决方案
_mockObject
.Expects.One.Method(m =>
m.DeletedVideos(-1, -1, out ignoredValue)) //values are ignored
.With(0, 20, Is.Out) //set the values manually
.Will(new SetIndexedParameterAction(2, 100) , Return.Value(deletedVideos));
当从我的控制器调用此方法时,NMock3 将传递 0、20 作为前两个参数 (Int32),并将返回 IEnumerable,第三个 Int 为 100。
要使用 SetIndexedParameterAction,您需要添加命名空间“NMock.Actions”。
new SetIndexedParameterAction (2, 100) 其中 2 是参数的索引,100 是要返回的值。
Return.Value (deletedVideos) 是方法要返回的值。