最近在专案做了一些 unit test
有时候会遇到需要 fake class 的时候
然后突然就遇到了一个情况, 不知如何 design 较佳
上来请教一下诸位高手
我们做 ClassA 的 unit test, 其中会使用到 ClassB 如下:
class ClassB {
public:
void Func1();
void Func2();
int Save();
...
}
其中因为 ClassB.Save() 会存取 DB, 因此在 unit test 时
我继承 ClassB 做了一个 fake(mock) class: ClassBFake
然后
#ifdef TEST
#define ClassB ClassBFake
#endif
基本上大多情况都运作正常, 直到遇到下面的情况,
突然觉得 something wrong """
int ClassA::CorrectData(vector<ClassB> &BVec);
{
CorrectDataInClassB(BVec);
...
// blah for BVec
...
}
Compile error XD
原因自然是因为 vector<ClassB> 和 vector<ClassBFake> 的冲突了
那么要怎么做才是使用 Fake(mock) class 比较完善的方法呢?
不知道有没有人有过这个需求 XD
// 总不会还要写一个 CorrectData(vector<ClassBMock>&) 吧 (假议题)
这样我也还要对 CorrectDataInClassB 做一样的事 (崩溃)
再不然就是把楼上这两个家伙全写成 Template function (...)
架构上的更正也可以是个选项...
Any idea?