2

我有一个方法,其参数之一为 out,我找到了有关如何在 NMock2 中模拟它的参考。然而,似乎 NMock3 的重大变化打破了 NMock2 的解决方案。这是我的方法的接口签名:

 IEnumerable<Video> DeletedVideos(int index, int pageSize, out int totalCount);
4

1 回答 1

1

这是我经过反复试验找到的解决方案

_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) 是方法要返回的值。

于 2014-06-09T22:09:42.270 回答