赞
踩
在计算机编程中,单元测试(英語:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。 在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
需要了解的三个概念:
简单的例子,5个测试用例,测试button组件中的icon、loading、icon的左右位置、click点击事件:
- //单元测试 chai库
- import chai from 'chai'
- import spies from 'chai-spies'
-
- chai.use(spies)
-
- const expect = chai.expect
-
- // icon
- {
- const Constructor = Vue.extend(Button)
- const vm = new Constructor({
- propsData: {
- icon: 'settings'
- }
- })
- vm.$mount()
- let useElement = vm.$el.querySelector('use')
- //断言href等于#i-settings,一个输入等于一个输出,没有报错则测试通过
- let href = useElement.getAttribute('xlink:href')
- expect(href).to.equal('#i-settings')
- vm.$el.remove()
- vm.$destroy()
- }
- // loading
- {
- const Constructor = Vue.extend(Button)
- const vm = new Constructor({
- propsData: {
- icon: 'settings',
- loading: true
- }
- })
- vm.$mount()
- let useElement = vm.$el.querySelector('use')
- let href = useElement.getAttribute('xlink:href')
- expect(href).to.equal('#i-loading')
- vm.$el.remove()
- vm.$destroy()
- }
- // icon的前后顺序
- {
- const div = document.createElement('div')
- document.body.appendChild(div)
- const Constructor = Vue.extend(Button)
- const vm = new Constructor({
- propsData: {
- icon: 'settings',
- }
- })
- vm.$mount(div)
- let svg = vm.$el.querySelector('svg')
- let {order} = window.getComputedStyle(svg)
- expect(order).to.equal('1')
- vm.$el.remove()
- vm.$destroy()
- }
- {
- const div = document.createElement('div')
- document.body.appendChild(div)
- const Constructor = Vue.extend(Button)
- const vm = new Constructor({
- propsData: {
- icon: 'settings',
- iconPosition: 'right'
- }
- })
- vm.$mount(div)
- let svg = vm.$el.querySelector('svg')
- let {order} = window.getComputedStyle(svg)
- expect(order).to.equal('2')
- vm.$el.remove()
- vm.$destroy()
- }
- // button 点击事件
- {
- //mock
- const Constructor = Vue.extend(Button)
- const vm = new Constructor({
- propsData: {
- icon: 'settings',
- }
- })
- vm.$mount()
- //间谍函数,劫持真正的函数
- let spy = chai.spy(() => {
- })
- vm.$on('click', spy)
- // 希望这个函数被执行
- let button = vm.$el
- button.click()
- expect(spy).to.have.been.called()
- vm.$el.remove()
- vm.$destroy()
- }
当这5个测试用例中的断言全部没有报错并通过,即button组件单元测试完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。