モックを使用してアルゴリズムをテストしたいと思います。アルゴリズム(現在の実装では)は、複数のパスでコンテナクラスを反復処理し、そこからset()sとget()sの値を取得します。テストの目的は、コンテナに保存されている最終結果を確認することです。最終的な値は、パスの間に読み書きされる値によって異なります。たとえば、任意の要素の値は、アルゴリズムが終了するまで複数回変更される可能性があり、ほとんどの場合、反復nの結果としての値は、反復n-1後の値に依存します。
私はモックのアイデアが好きで、計算が終了したときだけでなく、発生したアルゴリズムの誤った動作を検証できるので、上記のシナリオでそれらを使用したいと思います。ただし、これが実際に良いアイデアであるかどうかはわかりません。これは、モックの期待値を現在の実装に近づける必要があるためです(たとえば、 "expect get(element n)and return x、then set(要素n、値x + 1)、別のget(n)、x + 1を返し、set(n、x + 2)などを期待します。 ")
中間値が期待どおりであることを確認できますが、そのような期待はテストの目的と矛盾し(アルゴリズムが正しい最終値を計算することを確認します)、実装が変更された場合、最終的な値。
今私の質問:私は何かが欠けていますか?それにもかかわらず、このシナリオでモックを使用する良い方法はありますか?それとも、ここでそれらを使用することは単に意味がありませんか?他の人はこの問題にどのように対処しますか?
最後のコメント:私はc ++コードをテストし、googlemockを使用することについて話しているのですが、それがあなたの答えに何か違いをもたらすのであれば。
ps:ここでグーグルと記事をチェックしました(特に反復的な振る舞いをモックする-戻り値を増やすという問題にのみ取り組んでいます)が、問題に近いものは見つかりませんでした。