微信开发Mocha与chai的使用

    这次,我将带您使用Mocha与chai。使用Mocha与chai有哪些预防措施?以下是一个实际案例。让我们来看看。


    Mocha 的简介


    Mocha是流行的JavaScript测试框架之一,通过它添加和运行测试,从而保证代码质量


    Mocha 的安装与配置


    全局安装Mocha

1.png

    项目中也安装Mocha

2.png

    在package.json中加入下面脚本:

3.png

    Mocha 的使用


    在使用前,我们先看一下我们用来使用的测试项目的结构:

4.png

    如上图所示,测试文件需要放在test目录下,mocka运行时会执行test目录下的所有js文件(仅限于test以下这一层级,对test/subtest这一层级并不执行)。


    其中index.js为我们的被测试代码:

5.png

    而index.test.js为我们的测试代码(注意这里的命名加了一个test,并不是必须的,只是为了好区分哪些是测试文件):

6.png

    解析一下以上代码的语法:

7.png

    在上面的例子中,测试addNum函数,如果运行错误就抛出异常


    此时运行

8.png

    就可得到以下结果

9.png

    为了看一下运行错误的结果,此时我们修改index.js的代码为:

10.png

    再次运行

11.png

    结果如下:

12.png

    Mocha与断言库chai

    在上面的Mocha例子中,测试失败用抛异常来处理,多少有点繁琐,所以就有了断言库的出现。

    这里我们介绍一个常用的断言库chai。

    可以简单理解为这就是对我们上面抛异常方法的一个封装,当判断失败时会抛出一个异常。

    首先安装chai:

13.png

    接着让我们用chai修改一下上面的index.test.js:

14.png

    上面的语法很接近自然语言,expect(期待)一个表达式的结果equal(等于)一个表达式。

    运行

15.png

    得到以下结果:

16.png

    可以看出图中的断言库还打印出了期望的结果3和实际的结果2。

    如果用判断来抛异常的话会繁琐得多。


    以上语法为chai的expect语法,它还有should语法和asset语法。

    如果是以前用过java和.NET的话,对asset可能更适应一点:

17.png

    这其中的语法意思很明显,这里就不再赘述了。


    Mocha的更多使用

    如果想测试单一的测试js,可以用:

18.png

    或者多个js

19.png

    当然也可以用通配符测试某个文件夹下所有的js和jsx:

20.png

    Mocha与ES6

    在上面我们用的并非是ES6的语法,那么让我们把其中的代码都改为ES6的语法。

    其中index.js为:

21.png

    而index.test.js为:

22.png

    此时直接运行mock肯定是不行的,我们现需要安装一下babel:

23.png

    然后,在项目目录下面,新建一个.babelrc文件:

24.png

    接着讲package.json中的脚本改为:

25.png

    其中--compilers参数用来指定测试脚本的转码器,这行命令的意思是运行mocha时先用babel-core/register模块,处理一下.js文件


    注意:

    --compilers将会在未来被移除,官方称它是redundant(累赘的),而作为替代方案的是

26.png

    命令变得更加简单了


    Mocha测试用例执行的超时和高亮

    Mocha默认每个测试用例最多执行2000毫秒,如果到时没有得到结果,就报错。以下命令设置超时时间为5000:

27.png

    Mocha默认会高亮显示超过75毫秒的测试用例,以下命令设置高亮判断的临界值:

28.png

    Mocha测试的钩子

    Mocha在describe块之中,提供测试用例的四个钩子:before()、after()、beforeEach()和afterEach()。它们会在指定时间执行。

29.png

    小结

    涵盖了一些常用的mock和chai方法,并更多地介绍了mock测试结果的输出格式,以及skip跳过测试和only仅测试当前用例。

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题