组成
一个单元测试的形成应该是
测试框架+断言库+其余辅助的库
所以要装置依赖的时候,也是要抉择下载对应的模块,起码都要两个,一个测试框架+一个断言库
测试框架
jest,mocha,这两个都是,我贴一下网上查到的这两个都写法差异
例子:
sum函数
function sum(a, b) { return a + b;}
Jest写法(自带断言库)
const sum = require('./sum');describe('sum function test', () => { // 官网默认写法 test('should be 3', () => { expect(sum(1, 2)).toBe(3); });})
mocha写法(内部断言库Chai)
const {expect, assert} = require('chai');const sum = require('./sum');describe('sum function test', () => { // BDD 形式 it('should be 3 using expect', () => { expect(sum(1, 2)).to.equal(3); }); // TDD 形式 it('should be 3 using assert', () => { assert.equal(sum(1, 2), 3); });});
具体细节我没去深究,就看这个例子,这两个不同的是一个用test,一个是用it,还有jest是自带断言库,mocha是要另外装置一个依赖实现
断言库
断言指的是下面代码外面,那些to.be,to.equal,to.not.be这种,拿这个mocha举例子
const {expect, assert} = require('chai');const sum = require('./sum');describe('sum function test', () => { // 这些是测试框架的语法 // BDD 形式 it('should be 3 using expect', () => { // 这些是测试框架的语法 expect(sum(1, 2)).to.equal(3); // 这里是断言库语法 }); // TDD 形式 it('should be 3 using assert', () => { // 这些是测试框架的语法 assert.equal(sum(1, 2), 3); // 这里是断言库语法 });});
chai就是其中一个断言库,其余的话我百度找不到相似的,就不比拟了,晓得意思就好
辅助库
这个辅助库是我本人的了解,是依据我当初写的单元测试用到的,比方
sinon
我用到它的一个性能,就是判断这个点击事件是否真的执行了
// 点击事件 it('click', () => { const f = sinon.spy() wrapper = mount(Button, { listeners: { click: f } }) wrapper.trigger('click') expect(f.called).to.be.ok })
karma
这个百度的材料,它是帮忙测试后果能够在浏览器跑起来,比方用mocha+chai的时候,你运行的时候,它是在node跑的,也就是说是在终端那里输入后果,没有在浏览器输入
如果想要在浏览器console那里输入,就要用到它,当然它的性能并不是只是输入这么简略,它还能让测试用例在浏览器跑,不同的浏览器跑测兼容,然而我没有用到,所以不晓得 = =