我正在尝试模拟Cdatabase方法" Open"。下面是我做模拟类配置的文件。
AFXDB.H
$scope.digest()
mock_myCDatabase.h
...
virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE);
...
DemoClassB.cpp
...<linkers>
class mock_my_CDatabase :public CDatabase
{
public:
mock_my_CDatabase()
{}
~mock_my_CDatabase()
{}
MOCK_METHOD5(Open, BOOL(LPCTSTR lpszDSN, BOOL bExclusive,BOOL bReadonly, LPCTSTR lpszConnect,BOOL bUseCursorLib));
};
GMockDemo.cpp
...<linkers>
...
CDemoClassB::CDemoClassB(CDatabase &p_db)
{
m_db = &p_db;
}
...
...
BOOL CDemoClassB::fun2()
{
m_db->Open((LPCTSTR)NULL, FALSE, FALSE, (LPCTSTR)"ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb, *.accdb)};DSN='';DBQ=C:\\Karthik\\GMockDemo\\GMockDemo\\RepolyticsDB.accdb", CDatabase::noOdbcDialog);
return TRUE;
}
我无法模拟CDatabase方法:打开。当我运行代码时,我得到了
预期:被召唤一次 实际:从未打过话 - 不满意和活跃
任何人都可以帮我模仿CDatabase方法
答案 0 :(得分:1)
您应该在uninteresting function calls
上收到mock_my_CDatabase::Open
的警告消息。检查测试输出。
尝试将string matcher用于模拟的函数参数。您试图将第一个参数与指向文字的指针相匹配,该文字永远不会匹配。