首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用google伪装CDatabase打开函数

无法使用google伪装CDatabase打开函数
EN

Stack Overflow用户
提问于 2019-10-23 15:52:05
回答 2查看 145关注 0票数 0

我试图通过使用Google来模拟作为CDatabase类一部分的Open。Visual版本: 2010是下面的代码片段:

代码语言:javascript
复制
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 &)”的无效显式模板参数

有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-06 17:13:21

我也有过同样的问题。在我的例子中,它与Google的版本有关。我对1.8.1 --“支持预C++11编译器的最后一个版本”(如声明的这里)存在问题。拉动请求#1817解决了这个问题。我正在使用部门1.8.x now (提交dea0216)的主管,这个问题已经解决了。

票数 0
EN

Stack Overflow用户

发布于 2019-10-25 08:27:02

在您的测试中有两个错误:

  1. 您在EXPECT_CALL中添加了一个方法函数,这不是一个模拟方法。
  2. 您不会在测试中调用任何方法。

这是一种适当的方式:

代码语言:javascript
复制
TEST_F(TestRLanguage, initializeSuccess)
{

    FakeDatabase database;
    EXPECT_CALL(database, Open_impl(NULL, FALSE, FALSE, "ODBC;DSN=", FALSE)).Times(testing::Exactly(1));
    database.Open(NULL);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58526747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档