gmock 如何mock一个模板类单例
直接看代码
#include <gtest/gtest.h>
#include <gmock/gmock.h>
using ::testing::Return;
using ::testing::_;
template<typename T>
class mockFoo{
public:
static mockFoo& GetInstance(){
static mockFoo instance;
return instance;
}
MOCK_METHOD(T, bar, (const T&), ());
protected:
mockFoo() = default;
~mockFoo() = default;
mockFoo(const mockFoo&) = delete;
mockFoo& operator=(const mockFoo&) = delete;
};
class fooTest : public ::testing::Test {
protected:
void SetUp() override {
}
void TearDown() override {
}
};
TEST_F(fooTest, fooTest1){
auto& ins = mockFoo<int>::GetInstance();
EXPECT_CALL(ins, bar(_)).WillOnce(Return(42));
EXPECT_EQ(ins.bar(1), 42);
}
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
红帽系安装gtest:
sudo dnf install gtest gtest-devel gmock-devel
编译:
g++ -std=c++17 main.cpp -lgtest -lgmock -lpthread -o test
本文来自博客园,作者:mariocanfly,转载请注明原文链接:https://www.cnblogs.com/mariocanfly/p/19394629

浙公网安备 33010602011771号