"Any value" 对于 'const std::string&' 参数

"Any value" for a `const std::string&` argument

本文关键字:string 参数 Any std value const 对于      更新时间:2023-10-16

i具有将const std::string &作为参数的函数。我想写这样的东西:

EXPECT_CALL(mock, convertString(A<std::string>())).Times(0);

这失败了汇编:

no known conversion for argument 1 from 'testing::Matcher<std::basic_string<char> >' to 'const testing::Matcher<const std::basic_string<char>&>&'

我错过了什么吗?

这是MCVE,对于那些倾向于实验的人:

#include <string>
#include <gtest/gtest.h>
#include <gmock/gmock.h>

struct ToBeMocked {
    virtual ~ToBeMocked() = default;
    virtual void callMe(const std::string &arg) = 0;
};
struct Mock : public ToBeMocked {
    MOCK_METHOD1(callMe, void (const std::string &arg));
};

    TEST(Test, test)
{
    Mock mock;
    EXPECT_CALL(mock, callMe(::testing::An<std::string>()));
    mock.callMe("aaa");
}

P.S。我知道严格的解决方法,并将使用它。但是... A<T>()不使用const ref参数似乎是一个监督...

答案很简单:

EXPECT_CALL(mock, callMe(::testing::An<const std::string &>()));

使用函数参数的确切类型,而不是值类型。

相关文章: