[問題] Testing with fake classes
最近在專案做了一些 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?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.41.39
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409649640.A.BCD.html
※ 編輯: Ebergies (59.120.41.39), 09/02/2014 17:42:58
→
09/02 18:23, , 1F
09/02 18:23, 1F
→
09/02 18:25, , 2F
09/02 18:25, 2F
→
09/02 18:25, , 3F
09/02 18:25, 3F
→
09/02 19:16, , 4F
09/02 19:16, 4F
→
09/02 20:53, , 5F
09/02 20:53, 5F
→
09/02 20:54, , 6F
09/02 20:54, 6F
→
09/02 20:55, , 7F
09/02 20:55, 7F
→
09/02 21:00, , 8F
09/02 21:00, 8F
→
09/02 21:01, , 9F
09/02 21:01, 9F
→
09/02 21:14, , 10F
09/02 21:14, 10F
→
09/03 00:02, , 11F
09/03 00:02, 11F
→
09/03 20:17, , 12F
09/03 20:17, 12F
→
09/05 12:33, , 13F
09/05 12:33, 13F
→
09/10 14:03, , 14F
09/10 14:03, 14F
我覺得應該只是用詞不同, 我有混用嗎!!? @@
→
09/10 14:03, , 15F
09/10 14:03, 15F
因為是假議題所以請無視... 哈哈~
※ 編輯: Ebergies (59.120.41.39), 09/11/2014 20:08:58
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章