转载自楼主个人博客 Mocha 和 Chai 入门初探
Chai
在和 jest
作比较的时刻, 二者重要的差别就是 jest
的集成度比较高内置断言库, 而 mocha
须要搭配分外的断言库, 在此挑选了比较盛行的 chai
作为断言库.
作风的挑选
个中 chai
又有好几种断言作风, 我们常常见到的实在就是 BDD 作风的 should / expect
.
个中我较喜好 should
, 由于它能够直接以属性的体式格局嵌入一切内置原生对象, 所以能够很轻易的以 variable.should.equal(someValue)
的情势来誊写断言, 和 expect
相比较能够省略一对 ()
… 假如是 expect
作风的话, 上述示例代码等价于 expect(variable).to.equal(someValue)
. 在平常情况下二者的运用时险些雷同的, expect
作为断言的最先, should
接在想要断言的变量以后. 然则有一些处所 should
就须要变更一下我上述所说的写法了.
Should
should
实际上是给一切的对象都扩大了一个 getter
属性 should
, 假如你想在浏览器中运转测试的话, should
在 IE 浏览器中会有一些问题. 恰是由于 should
是扩大了 Object.prototype
, 所以假如变量的值为 null
或 undefined
的时刻, 是没法运用 .should.equal()
的情势的, 由于 null
, undefined
的原型不是 Object
,所以should
不存在. 所以此时应该以下所示运用.
const sould = require('chai').should();
...
should.not.exist.(variable); // variable 的值不该该是 null 或许 undefined
Mocha
如今我们来看看怎样对 mocha
举行设置以及上手的步骤. 我假定在 mocha
中写测试的时刻也一样须要运用 ES6 语法, 另有一个关注点是假如我在 webpack.config.js
中已设置了 alias
, 那末在写测试代码的时刻, 我愿望导入的文件也能够运用 alias
来坚持我途径的一致性以及与此同时带来的便利性.
设置
下载依靠
npm install --save-dev mocha chai
接下来只要在项目根目录下新建文件夹 test
, 在里面写的测试文件以 *.test.js
定名, 接下来在 packag.json
文件中 设置 npm test
敕令.
"npm test": "./node_modules/.bin/mocha"
还能够在 test
根目录下新建一个设置文件 mocha.opts
, 个中设置的选项相当于给 mocha
敕令加入了敕令行参数.
--recursive
--ui bdd
详细的设置请参照文档 Mocha – USAGE.
以后在终端输入 npm run test
即可运转测试.
支撑 ES6
上述只是设置好了基础的运转环境, 假如须要支撑 ES6 的话, 那末还须要两个简朴的步骤.
npm install --save-dev babel-register
然后修正 mocha.opts
--recursive
--ui bdd
--require babel-register
完成, 如今已支撑 ES6 语法了.
支撑 Webpack 的 Alias
假如不须要请跳过此步骤, 须要的引荐一个本人基于一个开源库修正的 babel 插件 babel-plugin-webpack-alias-resolve
.
写测试
直接上代码! 有一个对 axios
经由封装的 ajax
函数, 我如今对其举行测试. 下面是代码在 Gist 的地点 the test for ajax which based on axios
完毕
写的很少 … 正在实践当中, 实在测试上述谁人文件的时刻我已踩了一些坑了, 然则写出来照样不够多, 等踩多了总结一下踩过的那些坑.