gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:08 27 4
gpt4 key购买 nike

我正在尝试模拟 Cdatabase 方法“Open”。下面是我进行模拟类配置的文件。

afxdb.h

...
virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE);
...

mock_myCDatabase.h

...<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));
};

DemoClassB.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;
}

GMockDemo.cpp

// GMockDemo.cpp : Defines the entry point for the console application.
//

...<linkers>

using namespace testing;
using ::testing::Return;


TEST(mock, mockCDatabase)
{
mock_my_CDatabase mockDb;

EXPECT_CALL(mockDb, Open((LPCTSTR)"ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb, *.accdb)};DSN='';DBQ=C:\\Karthik\\GMockDemo\\GMockDemo\\RepolyticsDB.accdb", CDatabase::noOdbcDialog)).Times(8).WillRepeatedly(Return(TRUE));
CDemoClassB m_Bt(mockDb);
ASSERT_EQ(m_Bt.fun2(), TRUE);
}
...
...
int _tmain(int argc, _TCHAR* argv[])
{
::testing::InitGoogleMock(&argc, argv);
RUN_ALL_TESTS();
std::getchar(); // keep console window open until Return keystroke
return 0;
}

我无法模拟 CDatabase 方法:Open。当我运行代码时,我得到了

预期:被调用一次 实际:从未调用 - 不满意且活跃

谁能帮我模拟一个CDatabase方法

最佳答案

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

尝试使用 string matcher对于模拟函数参数。您正在尝试将第一个参数与指向文字的指针进行匹配,而后者永远不会匹配。

关于c++ - 无法使用 google mock c++ 模拟 CDatabase Open/OpenEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com