C++技巧之 【MOCKCPP 框架实现成员函数的 mock】,最简单的入口和使用方式!
背景
gmock 只能 mock 虚函数,mockcpp却又难以 mock 成员函数,现存的一些方法也可以 mock 成员函数,但是需要填写大量的参数,格式也非常恶心反人类,本文旨在开发一种方法去进行简单的mock,使用用例如下:
Class Base{
void A(){
}
void B(int a){
}
void B(int a, int b){
}
};
void FakeA(){
}
void FakeB1(Base* ptr, int a){
}
void FakeB2(Base* ptr, int a,int b){
}
MOCK_FUNCTION(&Base::A).stubs().will(Invoke(FakeA));
MOCK_FUNCTION(Base::B, void(Base*,int)).stubs().will(Invoke(FakeB1));
MOCK_FUNCTION(Base::B, void(Base*,int,int)).stubs().will(Invoke(FakeB2));
实现
直接将本代码复制进去成为一个单独的文件,使用的时候 include 该文件即可
#pragma once
#include <tuple>
#include "mockcpp/mockcpp.hpp"
// for member function
template <typename T>
class Foo {
};
template <typename R, typename C, typename... A>
class Foo<R(C, A...)>