乐趣区

关于前端:单元测试的认识

组成

一个单元测试的形成应该是
测试框架 + 断言库 + 其余辅助的库
所以要装置依赖的时候,也是要抉择下载对应的模块,起码都要两个,一个测试框架 + 一个断言库

测试框架

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 那里输入,就要用到它,当然它的性能并不是只是输入这么简略,它还能让测试用例在浏览器跑,不同的浏览器跑测兼容,然而我没有用到,所以不晓得 = =

退出移动版