0

一部の C# コードの単体テストを行っていますが、同じモックを使用する必要がありますが、異なる値を返す必要があります。たとえば、単体テストでこれを行いたいとします。

[Test]

_mockDatabase.Setup(x => x.Query(It.IsAny<Filter>())).Returns(List[0]).Verifiable();

_mockDatabase.Setup(x => x.Query(It.IsAny<Filter>())).Returns(List[1]).Verifiable();

実際のコードを変更せずにこれを回避する方法はありますか。

4

1 に答える 1

2

これは通常、クラスを使用して解決できます(同様のデータ構造も機能することにQueue注意してください)。Stack

var queue = new Queue<string>(new [] { "First query", "Second query" });
// You only need 1 setup call
_mockDatabase
    .Setup(x => x.Query(It.IsAny<Filter>()))
    .Returns(() => queue.Dequeue())
    .Verifiable();

後続の各呼び出しはQuery、キューから現在の要素をデキューします。上記のモックを 2 回呼び出すと、"First query"の後に"Second query"が生成されます。

于 2013-01-08T08:45:13.930 に答える