モック オブジェクトを使用して、shared_ptr ポインターを使用するクラスをテストしたいと考えています。
それが好き、
struct MyInterface {
// public functions
};
class MyClass {
public:
MyClass (shared_ptr<MyInterface> handle) : m_handle(handle) {}
~MyClass() {}
// ...
private :
shared_ptr<MyInterface> m_handle;
}
MyClass をテストするときは、それにモック オブジェクトを渡します。
struct NullDeleter {template<typename T> void operator()(T*) {} };
TMockObject<MyInterface> * mock = new TMockObject<MyInterface>();
shared_ptr<MyInterface> handle((MyInterface*)(*mock), NullDeleter());
MyClass myClass(handle);
delete mock;
問題は、共有ポインターを作成するときに NullDeleter を使用する必要があることです。そうしないと、モックが MyInterface として削除され、エラーが発生します。
これのためのより良いデザインはありますか?
ありがとう〜