[英]Copiable mocks in Google Test Framework
是否可以在Google Test Framework中復制模擬類? 我已經看到,一旦使用了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;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.