源码
从 https://github.com/google/googletest/blob/master/googlemock/test/gmock-function-mocker_test.cc 裁剪得来
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace testing {
class FooInterface {
public:
virtual ~FooInterface() {}
virtual int RefQualifiedConstRef() const& = 0;
virtual int RefQualifiedConstRefRef() const&& = 0;
};
class MockFoo : public FooInterface {
public:
MockFoo() {}
// Test reference qualified functions.
MOCK_METHOD(int, RefQualifiedConstRef, (), (const, ref(&), override));
MOCK_METHOD(int, RefQualifiedConstRefRef, (), (const, ref(&&), override));
private:
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
};
class FunctionMockerTest : public testing::Test {
};
TEST(FunctionMockerTest, RefQualified) {
MockFoo mock_foo;
EXPECT_CALL(mock_foo, RefQualifiedConstRef).WillOnce(Return(2));
EXPECT_CALL(std::move(mock_foo), RefQualifiedConstRefRef)
.WillOnce(Return(2));
EXPECT_EQ(mock_foo.RefQualifiedConstRef(), 2);
EXPECT_EQ(std::move(mock_foo).RefQualifiedConstRefRef(), 2); // NOLINT
}
} // namespace testing
编译命令和运行结果
g++ -std=c++17 imitation.cpp -lgtest -lgmock -lgmock_main -g
参考
gmock入门:https://github.com/google/googletest/blob/master/docs/gmock_for_dummies.md