NMock3如何使用out参数模拟方法?

时间:2014-06-09 22:09:42

标签: c# asp.net-mvc nmock

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

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

1 个答案:

答案 0 :(得分: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,其中3rd Int为100。

要使用SetIndexedParameterAction,您需要添加名称空间“NMock.Actions”。

new SetIndexedParameterAction(2,100)其中2是参数的索引,100是要返回的值。

Return.Value(deletedVideos)是方法返回的值。