2016-08-18 65 views
0

我想模擬一個方法,它需要兩個參數int和out參數bool。我能夠在首次調用時正確設置它,並且它返回右出值和返回值。但是,當第二次嘗試調用相同的方法時,它不會調用我的委託。任何想法,這裏是錯誤的:無法模擬多個調用的方法返回

我試了一下:

mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(x => 
    { 
     if (first) 
     { 
      first = false; 
      x[1] = true; 
      return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } }; 
     } 
     else 
     { 
      x[1] = false; 
      return new object[][] { new object[] { collectionId, "Collection Name" } }; 
     } 
    }); 

我嘗試這樣做,以及:

mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(
    x => 
    { 
     first = false; 
     x[1] = true; 
     return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } }; 
    }, 
    x=> 
    { 
     x[1] = false; 
     return new object[][] { new object[] { collectionId, "Collection Name" } }; 
    }); 

然而,這工作:

.ReturnsForAnyArgs(x => 
    { 
     if (first) 
     { 
      first = false; 
      x[1] = true; 
      return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } }; 
     } 
     else 
     { 
      x[1] = false; 
      return new object[][] { new object[] { collectionId, "Collection Name" } }; 
     } 
    }); 

回答

1

與嘲諷的問題out參數是該值改變了每個呼叫,所以該呼叫最初被Returns不再匹配。

您已經正確識別使用ReturnsForAnyArgs的解決方法,如described in this answer

相關問題