[英]Mocking non-class methods in c++
我正在嘗試在舊版應用程序中重構代碼,並遇到代碼看起來像這樣的情況
namespace DB
{
void GetDataBase(IDataBase** db);
}
有很多不同的地方可以調用此方法,我想測試這些方法,但要替換返回的結果。 我可以使用某種設計來正確模擬嗎?
我所擁有的就是這個,但是它雖然可行,但似乎並不是一個好方法
namespace DB
{
void GetDataBase(IDataBase** db);
void SetTestDataBase(IDataBase* db);
}
還有許多其他類似的情況,我很樂意就如何改善這種情況提出一些想法。
您建議的方式是可以的,但是它會污染測試代碼,因此您可能需要的不止一種這樣的方法。 另請注意,如果有靜態變量被初始化並使用此函數,則此方法可能不起作用。
我建議您做的是兩者之一-
兩種方法都確保沒有在main之前調用的靜態方法正在使用您要模擬的get方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.