我想对以下功能进行单元测试:
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)