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

组成

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

测试框架

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理