パラメータの 1 つを out として持つメソッドがあります。NMock2 でそれをモックする方法に関するリファレンスを見つけました。ただし、NMock3 には、NMock2 からのソリューションを壊す大きな変更があるようです。私のメソッドのインターフェイス署名は次のとおりです。
IEnumerable<Video> DeletedVideos(int index, int pageSize, out int totalCount);
パラメータの 1 つを 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 は最初の 2 つのパラメーター (Int32) として 0、20 を渡し、3 番目の Int を 100 として IEnumerable を返します。
SetIndexedParameterAction を使用するには、名前空間「NMock.Actions」を追加する必要があります。
new SetIndexedParameterAction (2, 100) ここで、2 はパラメーターのインデックスで、100 は返される値です。
Return.Value (deletedVideos) は、メソッドによって返される値です。