私たちのプロジェクトでは Google Mock を使用していますが、クラスが「モック可能」であることを確認するためだけに、プロダクション コードの複数の場所で構造を作成しています。これを行うのは、Google Mock のメリットを享受したいからですが、反対に、より最適な製品コードを使用したいからです。次のケースは私たちがよくすることであり、取り除きたいと考えています。
class A{
public:
void doSomething(); //Does something with _someB
void setSomeB(B* mockedB); //This is only here for GMock
private:
B* _someB; //This should not be a pointer, it is a pointer only for GMock
}
ご覧のとおり、これは単純化された例にすぎません。詳細は省きました。基本的に、B がポインターであることを取り除きたいと考えています。これをポインターとして使用する理由は、テスト コードで B をサブクラス化 (モック) し、そのセッターで設定できるからです。
これを回避する方法はありますか?B をクラス内でスコープすることはできませんか?
ありがとう