我想使用模拟对象来测试使用 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,否则,mock 将作为 MyInterface 被删除,这会导致错误。
有没有更好的设计呢?
谢谢~