想必单体测试绝大多数开发人员都不陌生了吧,单体测试是对软件中的基本组成单位进行测试。目的是检验软件基本组成单位的正确性。在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试,测试重点是系统的模块,包括子程序的正确性验证等。
单体测试的好处
- 在快速的迭代开发中,保证代码正常运行
- 如果想进行代码重构,可以大胆重构
- 看到自己写的代码,测试都能通过,有种安心感
- 最最重要的是可以保证制品的质量
单体测试的原则
- 写case时,以式样为依据,不以代码为基准
- 测试过程中不能更改源代码,不能在既有db环境中进行测试
- 所有case执行完后,确保DB的初期值没有被改变
- 一个case的测试代码,只运行一个case
- 测试代码提交时,确保所有case都能跑通。且多次结果都一致
- case中有更新或插入DB数据时,需要验证更新或插入后的结果的每个字段
- 每个case中的往DB中写入的数据,在case执行完后要清空
这次为大家介绍一下Jest
- 安装
npm install --save-dev jest
- 创建sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
- 创建sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
- 添加到package.json
{
"scripts": {
"test": "jest"
}
}
- 通过npm test运行测试case
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
其实,测试方式分为两种,但是一般在实际开发中都会使用BBD来进行测试。
// TDD
suite('Array', function() {
setup(function() {
});
test('equal -1 when index beyond array length', function() {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
// BDD
describe('Array', function() {
before(function() {
});
it('should return -1 when no such index', function() {
[1,2,3].indexOf(4).should.equal(-1);
});
});
语法是这样的:
describe('要测试的函数名', function(){
//测试case
it('case描述',()=>{
});
});