簡體   English   中英

Google Test Framework中的可復制模擬

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM