私たちのコードでは、多くの共有ライブラリを利用しています。この特定のケースでは、これらのライブラリの 1 つに静的メソッドが実装されています。コード内のさまざまな場所でこのメソッドを呼び出します。ただし、テストする場合は、プロセスを分離したいので、そのメソッドの実装をモックします。
これを行うために考えている方法は、テスト バイナリでメソッドを再実装することです。これにより、ライブラリ内の実装ではなく、実装が確実に採用されます。
ここでの主な質問は次のとおりです。これは純粋な悪ですか? もしそうなら、そのような場合の好ましい解決策は何ですか?
例...
共有ライブラリのヘッダー:
static const bool theMethod(...);
共有ライブラリでのメソッドの実装:
static const bool theMethod(...){
//The real implemetation does some fancy stuff here
return theRealValue;
}
私たちのテストケース:
#include <headerOfTheMethod.hpp>
//Our own "mocked" implementation
static const bool theMethod(...){
return true; //Lets say we always return true for the purpose of our test
}
//Here comes our code testing the class which is using that particular method
補足: gcc をコンパイラとして使用しており、ライブラリは動的にリンクされています。
更新: これが静的メソッドの場合。それは良い出発点ですが、それがクラスのメンバー関数だったらどうなるでしょうか?