单测篇
单测可让开发者提前考虑边界情况,提升代码的鲁棒性(Robustness),同时让自己拥有重构的信心,以及给阅读者迅速理解代码的途径,而且从设计层面来讲可迫使开发者写出无副作用、满足 SRP 原则的『好函数』等好处。
书写规范
【建议】复杂单测应符合以下更具可读性的编码模式:
it('should do sth when some conditions met', () => {
const input = 'abc';
const actual = testFunc(input);
const expected = 'xyz';
expect(actual).toEqual(expected);
});
Good
it('正确分隔含金额的副标题', () => {
const input = '奖励3000元还款额度';
const actual = splitSubtitle(input);
const expected = ['奖励', '3000','元还款额度'];
expect(actual).toEqual(expected);
});
Bad
当入参较长则不具备可读性
it('normal src parameter restful url', () => {
expect(foo('https://mdn.example.com/antmedia/afts/img/A*aafffffffffffff/600w_600h')).toBe('https://mdn.example.com/antmedia/afts/img/A*aafffffffffffff/600w_600h/432w_288h');
});
Good
it('should add zoom into path for restful url', () => {
const input = 'https://mdn.example.com/antmedia/afts/img/A*aafffffffffffff/600w_600h';
const actual = foo(input);
const expected = 'https://mdn.example.com/antmedia/afts/img/A*aafffffffffffff/600w_600h/432w_288h';
expect(actual === expected);
});
覆盖率
分为 branches statements line function 下一篇文章在展开细讲。
覆盖率报告
覆盖率是衡量代码质量最直观的一个指标,通过配置覆盖率阈值让线上运行的代码能始终恒稳。一般我们会要求新增的 util 覆盖率达到 99% 以上,增加配置文件,当阈值低于 99%,则测试不通过,以此限制代码质量在历经修改后不会恶化。
jest
有两种方式,通过命令行或配置
// @filename package.json
{
"scripts": {
"test": "jest --coverage" // or --collectCoverage
}
}
或通过配置可以写到 package.json 或 jest.config.js
// @filename package.json
{
"jest": {
"collectCoverage": true,
},
}
// @filename package.json
{
"jest": {
"collectCoverage": true,
+ "coverageThreshold": {
+ "global": {
+ "branches": 100,
+ "functions": 100,
+ "lines": 100,
+ "statements": 100
+ }
+ }
}
}
分支覆盖率
刚开始写单测的开发者,易犯的错误是,洋洋洒洒列举一大堆 case,但是对分支覆盖率没有任何增益。
如何有效提高覆盖率?我们必须先了解 branches statements line function 以及知道如何阅读覆盖率报告。先挖一个坑,等待下一篇文章《覆盖率》。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!