我有一个方法,其中一个参数为out,我找到了一个关于如何在NMock2中模拟它的参考。然而,似乎NMock3有重大变化,打破了NMock2的解决方案。 这是我的方法的接口签名:
IEnumerable<Video> DeletedVideos(int index, int pageSize, out int totalCount);
答案 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)是方法返回的值。