Mock打桩介绍

Mock打桩介绍

Mock简介

mock 工具的作用是指定函数的行为(模拟函数的行为)。可以对入参进行校验,对出参进行设定,还可 以指定函数的返回值。

几个相关概念:

(1)mock 规范:每个 MOCKER(function)开始,跟一系列的.stubs、.with、.will 等的内容的整体,称 为一个 mock 规范。

(2)核心关键字:指 stubs/defaults/expects/before/with/after/will/then/id 等这些直接跟在点后面 的关键字。

(3)扩展关键字:指 once()/eq()/check()/returnValue()/repeat()等这些作为核心关键字参数的关键字。

匹配关键字:expects的参数

约束关键字:with的参数

桩关键字:will/then的参数

Mock打桩

3个用于打桩的宏:

MOCKER:对全局函数(C函数)打桩

MOCKER(函数名)MOCKER_CPP:对类的普通函数打桩

MOCKER_CPP(&类名::函数名)MOCKER_CPP_VIRTUAL:对类的虚函数打桩

MOCKER_CPP_VIRTUAL(类对象指针,&类名::函数名)

2个核心关键字:

stubs() :指定某个函数的行为,单纯表示打桩

will():和桩关键字一起用,指定被调函数的行为

2个桩关键字:

returnValue(一个值): 对返回值打桩,即data桩

注意:mock是强类型的,不支持默认类型转换,类型不一致的话,需要手动强制类型转换

invoke(一个函数名):对函数本身打桩,即user桩

更多的核心关键字:

defaults:设定函数的默认行为,会被stubs、expects等覆盖掉

then: 和will用法一样,第一次用will,后面更多次用then,如果调用次数超过了设置的次数,则后面的以最后一次为准

id、before、after:用于指定多个规范之间的顺序

expects: 和匹配关键字一起用,校验次数

with: 和约束关键字一起用,校验参数

repeat(值,次数):重复返回一个值多少次

returnObjectList(值1,值2,值3,…):依次返回这些值

increase(初始值,结束值):返回值每次加1,结束值可以没有

注意:这仨关键字对次数有严格限制,如果调用次数多了,用例会挂掉,少了没关系

匹配关键字:和expects一起校验次数的

约束关键字:和with一起校验参数

入参校验:

设置出参:

卸桩

GlobalMockObject::verify():校验并清除所有MOCKER规范,即卸桩,直接写在TearDown里即可

优缺点

优点

1,调用起来更加简洁,尤其是针对虚函数的打桩,使用极其方便

2,对于打的多个桩,只需要一行就可以全部清除

缺点

1,没法对变长参数的函数打桩,如日志函数,就无法打桩

2,无法单独清除某一个桩,有时候不是很方便。如果非要实现单独清除某个桩,MOCK_METHOD勉强可以做到(PPT里未涉及到),但这个也是以对象为维度的,而不是针对某个桩

相关推荐

敖厂长,11年来的“第一变”
365bet足球现金网

敖厂长,11年来的“第一变”

📅 07-20 👁️ 1898
您所访问的页面不存在
365bet足球现金网

您所访问的页面不存在

📅 08-13 👁️ 7036
​珠江在哪里中国地图,珠江在哪个省
365bet足球现金网

​珠江在哪里中国地图,珠江在哪个省

📅 08-12 👁️ 9462
车内循环什么情况下开?汽车内循环有什么作用
365bet足球现金网

车内循环什么情况下开?汽车内循环有什么作用

📅 08-16 👁️ 1137