google test也有gmock但是只能对对象mock,不能对C函数mock.
mock工具的作用是指定函数的行为,可以对入参进行校验,对出参进行设定,还可以指定函数的返回值。
https://github.com/sinojelly/mockcpp/blob/master/docs/SimpleUserInstruction_zh.md
(1)mock规范:每个MOCKER(function)开始,跟一系列的.stubs、.with、.will等的内容的整体,称为一个mock规范。
(2)核心关键字:指stubs/defaults/expects/before/with/after/will/then/id等这些直接跟在点后面的关键字。
(3)扩展关键字:指once()/eq()/checkWith()/returnValue()/repeat()等这些作为核心关键字参数的关键字。
1、mock C函数或者类的静态成员方法用MOCKER;
mock 类的非静态成员方法需要先用
MockObject<MyClass> mocker;
声明一个mock对象,再用MOCK_METHOD(mocker, method)来mock指定方法。
// mock的类不全是虚方法, 如果调用到非虚方法,则mock框架不会报错,而是调用真正的非虚方法,可能出现内存非法访问。
// 从设计解耦的角度讲,应尽可能面向接口编程,而需要mock的也都是接口。接口里面的方法全是虚方法。所以不存在这种情况。
// 如果实际使用中,用来mock带有非虚方法,甚至含有成员变量的类,则可能出现问题。需要小心。