1
是否有可能做一個模擬類的可複製谷歌測試框架? 我已經看到,默認複製構造函數和複製賦值運算符被刪除,一旦使用了MOCK_METHOD
宏。 有沒有辦法解決這個問題?複印的嘲笑
是否有可能做一個模擬類的可複製谷歌測試框架? 我已經看到,默認複製構造函數和複製賦值運算符被刪除,一旦使用了MOCK_METHOD
宏。 有沒有辦法解決這個問題?複印的嘲笑
我無法想象複製模仿對象的任何使用情況。當你想用模擬對象模仿真實對象時 - 你可以從測試代碼和測試用例代碼訪問同一個對象 - 那麼爲什麼需要複製呢?
無論如何 - 我看到一種方法來複制模擬對象: 您必須在模擬對象上定義包裝 - 它應由std::shared_ptr
保存。
一個例子:
class XxxMock : public XxxInterface
{
public:
MOCK_METHOD0(foo, void());
};
#include <memory>
class XxxSharedMock : public XxxInteface
{
public:
XxxSharedMock(std::shared_ptr<XxxMock> xxxMock = std::make_shared<XxxMock>())
: xxxMock(xxxMock)
{}
void foo() override
{
xxxMock->foo();
}
// having: XxxSharedMock xxxMock;
// do: EXPECT_CALL(xxxMock.mock(), foo());
XxxMock& mock() { return *xxxMock; }
XxxMock const& mock() const { return *xxxMock; }
privated:
std::shared_ptr<XxxMock> xxxMock;
};