Bへの呼び出しが後でAへのコールバックを開始するクラスBとインタフェースするC++クラスAをテストする必要がある場合は、どのようなデザインパターンが良いでしょうか?
私はこれらのコールバックが実行され、どの情報で制御されるかを完全に制御する必要があります。C++コールバック付きの偽のクラス
私はGoogle TestとGoogle Mockをテストフレームワークとして使用しています。 Google Mockのイントロでは、difference between a fake and a mockについて説明します。私は偽のBクラスを必要とし、モックではないようです。そのドキュメントnon-trivial implementations of B's functionsを持っているそれらがどのように詳細に
が、これはBからAへ
UPDATESコールバックを制御するための私の要件で解決していない:
- だけ明確にする:Aはコールバックを持っています。 AがBの関数を呼び出した後のある時点で、BはAのコールバック関数を開始します。私の場合、BはAへのポインタを保持し、(あらかじめ定義された仮想クラスA_abstractから派生した)
あなたは最初の半分が解決策であるように思われますが、まだテストする必要があります。何らかの理由で私はBがAを引き起こさなければならないという考えに縛られていました。私の場合少なくともBやテストスクリプトがAのコールバックを呼び出すかどうかは関係ありません。 – Jonathan
それは常にそうであるべきである方法です。テスト中のコードが気付かないか、またはその違いを気にしない限り、モックは実際のコードを再解析する必要はないことを覚えておいてください。 –