6

モックされたオブジェクトのメソッドが正しいパラメーターで呼び出され、正しい結果を返すことをテストするモックが機能しています。

ここで、別の条件を確認したいと思います。この場合、モックされたオブジェクトに対してメソッドを実行する必要はありません。これを単体テストでどのように表現できますか?

4

2 に答える 2

16

モックを厳密に作成できます。そうすれば、Setup (または使用している Moq のバージョンに応じて Expect) のメソッドのみを実行できます。

var foo = new Mock<IFoo>(MockBehavior.Strict);
foo.Expect(f => f.Bar());

Bar() 以外の foo でメソッドが呼び出されると、例外が発生し、テストは失敗します。

于 2009-01-29T03:04:55.783 に答える
3

最も簡単な 2 つの方法は、MockBehaviour.Strict を使用することです。

var moqFoo = new Mock<IFoo>(MockBehaviour.Strict);  
//any calls to methods that there aren't expectations set for will cause exceptions

または、常にコールバックを使用して、そこから例外をスローすることもできます (呼び出すべきではない特定のメソッドがある場合)。

var moqFoo = new Mock<IFoo>(MockBehaviour.Loose);  
moqFoo.Expect(f => f.Bar()).Callback(throw new ThisShouldNotBeCalledException());
于 2009-01-29T03:04:45.597 に答える