vue项目单元测试编写-mocha(三)

vue项目单元测试编写-mocha

此文章涉及使用mocha进行vue组件的单元测试编写,chai和sinon单元测试辅助工具的使用。如果需要了解vue-cli3.0项目测试环境的安装,请移步到我上一篇文章中。本篇默认安装了上述测试库和测试环境。
前端vue单元测试环境搭建

mocha的使用

mocha是一个编写js单元测试的框架,这里我们使用他作为模块以及vue组件的单元测试框架。

语法&API

mocha是一个灵活,简洁的测试框架,所以他只提供了基础的测试语法和极少的API,他们都是函数,可以直接使用,无须引入之类的:

  • describe(name, fn) 定义一组测试,即测试套件

  • it(name, fn) 定义一项测试,是测试的最小单元

// moduleName.spec.js
// 定义一组测试
describe('describeName', () => {
   
   // 定义一项测试
   it('testName', () => {
   
       // 测试内容
   })
})

在上面代码中,一个测试文件包含多个describe块,describe你可以理解为一个测试套件,表示定义一组测试,而it则是最小的测试单元,定义一个测试用例。describe可以嵌套describe,一个describe可以包含多个it。你可以根据describe来划分业务模块和功能模块的测试,然后里面包含一组组相关的测试用例。以此来整理你的测试用例。

挂起测试

当你使用it时,只传递第一个参数,即单元测试的名称时,而没有传递第二个函数参数时,那么这个测试会被视为挂起状态pending,也会体现在测试报告中。

关于测试的一些小约定
  • 测试文件一般放在根目录下的tests文件夹中(一般约定是这个(vue-cli项目默认就是这个),好像也有用test文件夹的),然后编写测试的js文件一般以:.test.js或者.spec.js结尾,这也是一个约定吧。当然了,这也只是大多数人的一个约定。

  • 测试文件的文件名 = 被测试模块名 + .(test|spec).js,最好按模块或者组件或者业务逻辑分类进行测试模块的文件夹分类。以此来管理你的测试文件。

测试用例的编写

你可以使用describe来定义一个测试套件,即可以看做测试块,然后你也可以在describe中嵌套多个it,it指一个个的测试用例,你还可以在describe嵌套describe,比如:

// example.spec.js
describe('测试模块一', () => {
   

    it('测试用例一', function () {
   
        // 测试代码

    });
    it('测试用例二', function () {
   
        // 测试代码
    });
    describe('测试子模块', () => {
   
        it('测试用例三', function() {
   
            // 测试代码
        })
    })

})

ps:上面代码有一点问题,在describe函数中,第二个参数的函数最好是不要使用箭头函数,因为如果使用箭头函数,就无法使用describe中的一些方法,比如this.timeout等。it中也最好不要用箭头函数,或者在整个使用mocha编写测试时最好都不要用箭头函数。如果你不需要使用上下文那用箭头函数也无所谓,不过,与其在编写时打擦边球,不如一开始就杜绝不推荐的用法。

测试结果

  测试模块一
    √ 测试用例一
    √ 测试用例二
    测试子模块
      √ 测试用例三


  4 passing (40ms)

测试通过和失败

在一个单元测试中,即一个it块中,如果其第二个参数的函数在执行时抛出了异常,那么这个测试就会被判定为不通过,换句话说:只要测试不抛出错误,测试就算是通过。

describe('测试模块一', () => {
   
    it('测试用例一', function () {
   
        // 空的测试用例,什么也没做
    });
    it('测试用例二', function () {
   
        // 抛出错误
        throw new Error('测试用例二测试出错');
    });
})

输出结果(测试不通过):

  测试模块一
    √ 测试用例一
    1) 测试用例二 // 红色的


  1 passing (227ms)

  1 failing

  1) 测试模块一
       测试用例二:
     Error: 测试用例二测试出错
      at Context.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值