我试图通过使用Google来模拟作为CDatabase类一部分的Open。Visual版本: 2010是下面的代码片段:
class TestRLanguage: public RLanguage, public ::testing::Test
{
};
class FakeDatabase : public CDatabase
{
public:
MOCK_METHOD5(Open_impl, BOOL(LPCTSTR lpszDSN, BOOL bExclusive,BOOL bReadonly, LPCTSTR lpszConnect,BOOL bUseCursorLib));
BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE) override
{
Open_impl( lpszDSN, bExclusive, bReadonly, lpszConnect, bUseCursorLib);
}
};
// Test case for testing initialize function
TEST_F(TestRLanguage, initializeSuccess)
{
FakeDatabase database;
EXPECT_CALL(database, Open(NULL, FALSE, FALSE, "ODBC;DSN=", FALSE)).Times(testing::Exactly(1));
}我得到以下错误:
error C2770:用于“AddReference>::type>::type测试::AddReference &)”的无效显式模板参数
有人能帮我解决这个问题吗?
发布于 2021-01-06 17:13:21
发布于 2019-10-25 08:27:02
在您的测试中有两个错误:
EXPECT_CALL中添加了一个方法函数,这不是一个模拟方法。这是一种适当的方式:
TEST_F(TestRLanguage, initializeSuccess)
{
FakeDatabase database;
EXPECT_CALL(database, Open_impl(NULL, FALSE, FALSE, "ODBC;DSN=", FALSE)).Times(testing::Exactly(1));
database.Open(NULL);
}https://stackoverflow.com/questions/58526747
复制相似问题