2016-08-18 5 views
0

boolのintとoutの2つのパラメータを取るメソッドをモックしようとしています。私は最初の呼び出しのために正しく設定することができ、正しい値と戻り値を返します。しかし、2回目に同じメソッドを呼び出そうとすると、私の代理人が呼び出されません。複数の呼び出しでメソッドをモックできない戻り値

私が試した何を:

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パラメータは、値が各コールを変更するため、最初にでスタブされたコールはもう一致しません。

ReturnsForAnyArgsを使用する回避策を正しく特定しました。described in this answerです。

関連する問題