Moq の Verifiable() の目的は何ですか? 質問する

Moq の Verifiable() の目的は何ですか? 質問する

の目的は何ですかVerifiable()?

を検証しMockてこれを省略した場合でも、 は検証されますSetUp

編集:私は、VerifyAll()すべてが検証される理由としてこれを使用していました。 に変更した後、Verify()私の.Verifiable() SetUpものだけがチェックされるようになりました。

ベストアンサー1

補足: 他の回答にあるように、 の目的は、を一連の「遅延呼び出し」に.Verifiable登録し、 を介してトリガーできるようにすることです。SetupVerify(...)mock.Verify()

OP の説明では、これが目標であり、唯一の問題はなぜそれが機能しないのかを理解することだったことが明らかになっていますが、@Liam が促したように、答えは実際にはこれにも触れるべきです:-私が知る限り、主な使用例は次のとおりです。

  • mock.Setup()との間における乾燥の維持mock.Verify
  • 検証の設定を実際のVerify呼び出し自体から切り離すことができます(たとえば、別のヘルパーメソッドで設定できます)。

...そして私の答えに戻ると、簡潔に言えば、「上記の長所は、そのような構造に過度に依存するテストの読みやすさと保守性にそれらの目標を達成することの影響によって上回られると一般的に考えられているので注意してください」と効果的に述べています。

オリジナル: 可能な場合は、代わりにAAAレイアウトなのでまたはとペアになるのmock.Verify( expression )ではなく、作業が完了した後に明示的な呼び出しを行うmock.Setup( ... ).Verifiable()mock.Verify()mock.VerifyAll()可能な限り(クレジット:@kzu)。

おすすめ記事