Verifiable()
の目的は何ですか?
Mock
を検証し、これを省略すると、SetUp
が検証されます。
編集:私はVerifyAll()
を使用していたため、すべてが検証された理由です。 Verify()
に変更した後、私の.Verifiable()
SetUp
sのみがチェックされていました。
補遺:他の回答が述べているように、.Verifiable
の目的は、Setup
をVerify(...)
を介してトリガーできる一連の「遅延mock.Verify()
呼び出し」に参加させることです。
OPの明確化により、これが目標であり、唯一の問題はそれが機能しなかった理由を解明することだけであることが明らかになりましたが、@ Liamが指摘したように、答えもこれに実際に触れる必要があります:- 私が見る限りの主要なユースケースは次のとおりです。
mock.Setup()
とmock.Verify
の間の乾燥を維持するVerify
呼び出し自体から検証の構成を切断できるようにします(たとえば、別のヘルパーメソッドでセットアップできます)...そして私の答えに戻ります。簡潔に言うと、「上記の長所は、これらの目標を達成することで、そのような構成要素に頼りすぎるテストの読みやすさと保守性に影響を与えると一般に考えられているので注意してください」
ORIGINAL:可能な場合は、代わりに [〜#〜] aaa [〜#〜] レイアウトに従う必要があり、したがって 明示的に行う必要があることに注意してくださいmock.Verify( expression )
は、mock.Setup( ... ).Verifiable()
またはmock.Verify()
とペアになっているmock.VerifyAll()
ではなく、作業完了後に呼び出します(クレジット: @ kzu )。
Verify()
メソッドがテストの終了時に呼び出され、検証可能としてマークされた期待値のいずれかが呼び出されていない場合、例外はthrown
です。
VerifyAll()
は、検証可能な期待値をチェックしません。