无法使用google mock c ++模拟CDatabase Open / OpenEx

时间:2015-10-27 11:13:27

标签: c++ unit-testing mfc googlemock

我正在尝试模拟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方法

1 个答案:

答案 0 :(得分:1)

您应该在uninteresting function calls上收到mock_my_CDatabase::Open的警告消息。检查测试输出。

尝试将string matcher用于模拟的函数参数。您试图将第一个参数与指向文字的指针相匹配,该文字永远不会匹配。