moqを使用すると、入力に関するさまざまな条件を使用して、同じメソッドでSetupを複数回呼び出すことができます。
// Arrange
Mock<IObject> stub = new Mock<IObject>();
stub.Setup(method => method.Foo(It.IsAny<int>())
.Returns<int>(value => value);
stub.Setup(method => method.Foo(It.Is<int>(t => t == 100)
.Returns<int>(value => value * 1.10);
var sut = new TestedObject(stub.Object);
// Act
var actual = sut.Bar();
...
...等々。この場合、Fooメソッドは整数を取り、渡された値に応じてメソッドの実装を決定します。
Visual Studioの偽物でこれを達成する方法はありますか?コードは次のようになります。
// Arrange
var stub = new StubIObject
{
Foo = (value) => value, // This covers the default case (It.IsAny<T>)
};
var sut = new TestedObject(stubIObject);
// Act
var actual = sut.Bar();
しかし、他の条件付きケースをどのように設定しますか?
編集:これは奇妙な設定であることに気づきました。通常、1つの単体テストでスタブのさまざまな実装をテストすることはありません。これは純粋に学術的な質問です-私はこのタイプのコードを単体テストに入れません...おそらく。