2016-12-12 9 views
1
Variable.h 
.... 
#define BLAH = "blahstring" 
..... 

こんにちは、 #defineで変数をモックするにはどうすればよいですか? Googleモックdocsでは、ほとんどのメソッドやオブジェクトについて話していますが、モック定数はありません。私が偽のクラスに呼び出しを委譲することが、テスト値を返すことを考えると最も近い。Googleモックで定数をモックする方法は?

私は変数のリストを持つヘッダファイルを持っています。私はテストでBLAHを呼び出すとき、 "blahstring"の代わりに "mockblahstring"を得るようにしたいと思います。

任意のコード例が役に立ちます。

ありがとうございました。

+1

'#undef'を使用すると、マクロ定義を変更することができます - http://stackoverflow.com/questions/9274500/redefining-or-changing-macro-valueを参照してください。ただし、変更が表示されていない、すでにコンパイルされたファイルやファイルには影響しない可能性があります。あなたの質問に対する率直な答えは、そうしないでください。単体テストを行うときに定数を変更することに意味がありません。 – PiotrNycz

答えて

1

#defineは定数ではありません。

マクロ(さらに読むためにhereを参照)です。コンパイラは、gmockライブラリの "finger"を取得する前に、マクロのすべてのオカレンスをキックして置き換えます。

つまり、コンパイルされたオブジェクトにはBLAHの「オブジェクト」が含まれていません。それはあなたがBLAHを書いたすべての場所に対応する文字列を含んでいます。

この意味では、もう存在しない「エンティティ」を嘲笑する方法はありません。

本当の答えは、プリプロセッサーマクロを「定数」として絶対に使用しない理由の1つです。なぜなら、彼らは定数ではないからです!彼らが意味を成す場所はまだありますが、間違いなく定数の代わりにはありません。

その意味では、他に何かをする前に、元に戻って基本的な基本事項を学ぶべきです。

関連する問題