小编Qwe*_*wer的帖子

EXPECT_CALL 用于具有类型为 unique_ptr 引用的参数的模拟函数

我想对以下功能进行单元测试:

void
MyClass::add(const Shape& shape)
{
   std::unique_ptr< Line> line;
   if (m_DataBase.getLine(shape->getId(), line).ok())
   {
      addEntry(line->getDimensions());
   }
}
Run Code Online (Sandbox Code Playgroud)

为此,我需要模拟 DataBase 类的 getLine 函数:

class DataBase
{
 public:
   virtual Result getLine(const ShapeId& shapeId, const std::unique_ptr< Line >& line) = 0;
...
}
Run Code Online (Sandbox Code Playgroud)

数据库类模拟:

class DataBaseMock
{
 public:
   MOCK_METHOD2(getLine, Result(const ShapeId& shapeId, const std::unique_ptr< Line >& line));
...
};
Run Code Online (Sandbox Code Playgroud)

MyClass::add 函数测试如下:

MyClassTest::MyClassTest{
    DataBaseMock m_DataBaseMock;
    std::unique_ptr< MyClass> m_MyClass;
}

void MyClassTest::setUp(){
    m_MyClass = std::unique_ptr< MyClass >(new MyClass(m_DataBaseMock));
}

void MyClassTest::Test_Add()
{
   Shape shape;
   std::unique_ptr <Line> …
Run Code Online (Sandbox Code Playgroud)

c++ unit-testing googlemock gmock

3
推荐指数
1
解决办法
1272
查看次数

标签 统计

c++ ×1

gmock ×1

googlemock ×1

unit-testing ×1