我自学了gmock并了解其功能。如果我们可以模拟一些方法并测试我们的流程,那就太好了。
我现在的问题是我们有巨大的代码库,它为特定的流调用了许多子模块接口 - 即底层类方法调用了许多子模块/子子模块接口:
bool classA::methodA(uint64_t number) {
if (0 == number) {
return false;
}
Foo* p=&obj;
while (true && (p->*fptr)(number)) {
if (1 == number) {
return true;
} else if (0 == number%2) {
number = number / 2;
} else {
Printer* machine;
char* buff;
PTR pmf[2]= {&B::Copy, &B::Append};
(machine->*pmf[APPEND])(buff, number);
number = 3 * number + 1;
}
}
}
是否有方法/机制/拇指规则,我们可以通过它来识别/了解需要模拟的所有子模块方法来测试我的类100%代码?
答案 0 :(得分:2)
此处不需要规则。你只需要模拟需要嘲笑的东西。没什么,没什么。
请记住:您编写单元测试的想法是在隔离中测试您的单元。这意味着您有时必须“删除”您的单元与其他代码的依赖关系。
现在让我们假设你的代码使用了一些依赖关系B.
从这个意义上讲,经验法则是:如果必须,可以嘲笑事物。
因此我们无法告诉你究竟要嘲笑什么。相反,你必须退后一步: