googlemock - 捕获 GMOCK 字符串参数

标签 googlemock

如果我有如下接口(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/

相关文章:

C++ Google Mock - EXPECT_CALL() - 不直接调用时期望不起作用

c++ - C++ FakeIt 库多重继承

C++:使用 Google Mock 和 Code::Blocks、MinGW 和 C++11 进行单元测试

c++ - Google Mock 和 Vcpkg Unresolved external symbol 错误

dependency-injection - 使用依赖注入(inject)模拟 C++ 类

googlemock - 如何使用 googlemock 模拟可变参数函数

c++ - 死亡测试时错误的函数调用评估

c++ - 来自 gmock 的 DefaultValue 的范围问题

c++ - 更好的模仿?