我想使用模擬對象來測試我的類,它使用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的引起誤差。
有沒有更好的設計呢?
感謝〜