我試圖單元測試的HTTP API寫在C++:懲戒常量值測試
void getLogNames(Request & req, Response & res)
{
vector<string> files = getFilesInDirectory(LOG_LOCATION, ".log", false);
json response(files);
res.send(response);
}
的問題是,LOG_LOCATION
從common.h
包括在內,是const
,並且不能由我的測試中被改變代碼:
const std::string LOG_LOCATION = "/var/log"
我試圖在文件上這樣做:
#ifdef UNIT_TEST
#include <common_mock.h>
#else
#include <common.h>
#endif
然而,common.h
被列入了在被鏈接某些共享庫,我將不得不UNIT_TEST
掛鉤添加到所有這些文件並重新構建共享庫以及,我寧願避免...
是有更簡單的方法,我可以做到這一點,一些#define
技巧或什麼?
'#define LOG_LOCATION std :: string {「/ some/other/location」}'? – nwp
@nwp這仍然需要放在源文件的'UNIT_TEST'模擬頭中,對嗎? – RPGillespie
看來你想要測試'getLogNames':提供'getFilesInDirectory()'的模擬實現,並將其鏈接到測試。 –