例如:
生产.cpp
int func1()
{
return 7;
}
void func2()
{
printf("func2");
}
void productionCode()
{
int x = func1();
if(x==7) func2();
}
测试生产.cpp
int func1()
{
return mock().actualCall("func1").
returnIntValue();
}
void setExpFunc1(int x)
{
mock().expectOneCall("func1")
andReturnValue(x);
}
TEST(testGroupSample, testMockFunc1)
{
setExpFunc1(8);
// this will call mock func1()
productionCode();
}
TEST(testGroupSample, testRealFunc2)
{
// this will call real func1()
productionCode();
}
据我了解,当 func1() 被嘲笑时,无法测试实际功能。
下面的示例代码只是我想要做的一个想法。
因为我必须测试许多调用内部许多函数的函数。有时,我不在乎那些其他函数的实际结果,所以我嘲笑它,但是当我想在我正在测试的函数内部调用时测试真实函数的行为时,我不能这样做,因为那个函数已经被嘲笑了。
另外我希望我可以在不修改生产代码的情况下做到这一点,只修改测试代码。