如果我有如下接口(interface)成员函数:
virtual bool print_string(const char* data) = 0;
使用以下模拟
MOCK_METHOD1(print_string, bool(const char * data));
是否可以捕获传递给 print_string() 的字符串?
我尝试过:
char out_string[20]; //
SaveArg<0>(out_string); // this saves the first char of the sting
这会保存字符串的第一个字符,但不会保存整个字符串。
最佳答案
类
struct Foo {
virtual bool print_string(const char* data) = 0;
};
模拟
struct FooMock {
MOCK_METHOD1(print_string, bool(const char * data));
};
测试
struct StrArg {
bool print_string(const char* data) {
arg = data;
return true;
}
string arg;
};
TEST(FooTest, first) {
FooMock f;
StrArg out_string;
EXPECT_CALL(f, print_string(_))
.WillOnce(Invoke(&out_string, &StrArg::print_string));
f.print_string("foo");
EXPECT_EQ(string("foo"), out_string.arg);
}
您始终可以使用 Invoke 来捕获结构中的参数值。
关于googlemock - 捕获 GMOCK 字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390218/