繁体   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