我们在代码中使用了很多共享库。在这种特殊情况下,在这些库之一中实现了一个静态方法。我们在代码的不同位置调用此方法。但是,如果我们想测试,我们想隔离进程,所以模拟该方法的实现。
我们正在考虑这样做的方式是通过在测试二进制文件中重新实现该方法。然后,这将确保我们的实现被采用而不是 lib 中的实现。
这里的主要问题是:这是纯粹的邪恶吗?如果是这样,这种情况下的首选解决方案是什么?
一个例子...
共享库的标头:
static const bool theMethod(...);
共享库中方法的实现:
static const bool theMethod(...){
//The real implemetation does some fancy stuff here
return theRealValue;
}
我们的测试用例:
#include <headerOfTheMethod.hpp>
//Our own "mocked" implementation
static const bool theMethod(...){
return true; //Lets say we always return true for the purpose of our test
}
//Here comes our code testing the class which is using that particular method
旁注:我们使用 gcc 作为编译器,库是动态链接的。
更新: 如果这适用于静态方法。这将是一个很好的开始,但如果它是一个类的成员函数会发生什么?