# 基于白盒数据测试数据快照
既然输入的数据在变化,那么我们就需要消除这种变化。业界中常用的办法之一就是使用非真实数据进行打桩测试,因此我们选择的策略也是基于白盒数据来进行。
# 1. 测试思路
基于白盒数据(桩数据)的测试策略。
- 开发者根据业务逻辑构造桩数据,产生“预期值”
- 程序使用同一份桩数据,产生“数据快照”
- 单元测试校验“数据快照”与“预期值”是否相同
# 2. 数据打桩
我们推荐使用 mockstar,后面我们还会进一步说,此处先贴一个图。
# 3. 针对数据快照的单元测试
由于输入确定了,因此输出的数据也是确定,我们写单元测试时就会很简单。
以下是用 mocha + chai 写的例子:
describe('检查:基本信息', function () {
it('检查: 红包兑换商城', function () {
let checkData = Object.assign({}, resultData.data.exchangeGiftInfo);
expect(checkData.i2.limit).to.match(/限时\d+小时/);
checkData.i2.limit = 'has checked';
expect(checkData).to.eql({
'description': '商品兑换后可在任一直播间-礼品-包裹中查看',
'i0': {
'btnText': '兑换',
'count': 'x110',
'currentPrice': '¥10.00',
'isExist': true,
'limit': '',
'originalPrice': '¥11.00',
'pic': 'http://11.url.cn/huayang/resource/yule/new_gift/ilivenew/memeda91.png'
},
'i1': {
'btnText': '兑换',
'count': 'x55',
'currentPrice': '¥8.00',
'isExist': true,
'limit': '',
'originalPrice': '¥8.00',
'pic': 'http://11.url.cn/huayang/resource/yule/new_gift/ilivenew/ainio91.png'
},
'i2': {
'btnText': '兑换',
'count': 'x4',
'currentPrice': '¥30.00',
'isExist': true,
'limit': 'has checked',
'originalPrice': '¥35.00',
'pic': 'http://11.url.cn/huayang/resource/yule/new_gift/ilivenew/xianhua91.png'
},
'isExist': true,
'title': '红包商城兑换',
'total': 3
});
});
});