"Any value" 对于 'const std::string&' 参数
"Any value" for a `const std::string&` argument
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 &>()));
使用函数参数的确切类型,而不是值类型。
相关文章:
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 在 C++17 中使用 const std::string& 参数有意义吗?
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 变量参数列表 后面的'const std::string&'弄乱了堆栈
- 为什么我不能像使用 std::string::size_type 那样使用 QList::size_type?(模板参数错误)
- 在基于 arm 的 Android 设备上使用带有参数 -DCMAKE_BUILD_TYPE:STRING=Releas
- q致命参数:将 QString 转换为常量字符* 会导致警告"format string is not a string literal"
- std::string 参数是如何从原始字符数组文本传递的
- 无法从'std::string'中推断出'const std::reverse_iterator<_RanIt> &'的模板参数
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- 为什么在类构造函数方法中,std::string 参数在调试时显示不同的结果?
- "Any value" 对于 'const std::string&' 参数
- 使用 std::string 参数和不可移动/可复制参数构建 std::map
- 生成一个包含int和string参数的向量
- 使用 c++/cli 中的 std::string 参数调用本机 c++ dll
- GetFunctionPointerForDelegate将委托中的String^参数转换成什么?
- 如何允许std:string参数为NULL
- 减少"const char*"和"const std::string&"参数的过载