137

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

a を検証してMockこれを省略しても、 は検証されSetUpます。

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

4

2 に答える 2

91

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

OPの明確化により、これが目標であり、唯一の問題はそれが機能しない理由を理解することであったことが明らかになりましたが、@ Liamが提案したように、答えはこれにも実際に触れるべきです:-私ができる限りの主要なユースケース以下を参照してください。

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

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

オリジナル: 可能な場合は、代わりにAAAレイアウトに従う必要があることに注意してください。したがって、作業が完了したら、可能な限りorとペアにするのではなく、明示的な呼び出しを行う必要があります (クレジット: mock.Verify( expression )mock.Setup( ... ).Verifiable()mock.Verify()mock.VerifyAll()@kzu )。

于 2009-11-13T10:49:32.337 に答える
62

メソッドがテストの最後に呼び出されたときに、Verify()検証可能とマークされた期待のいずれかが呼び出されていない場合、例外はthrownです。

VerifyAll()検証可能な期待をチェックしません。

于 2009-06-11T11:33:40.200 に答える