Mocha 和 Chai 入门初探

转载自楼主我的博客 Mocha 和 Chai 入门初探javascript

Chai

在和 jest 做比较的时候, 二者主要的不一样就是 jest 的集成度比较高内置断言库, 而 mocha 须要搭配额外的断言库, 在此选择了比较流行的 chai 做为断言库.java

风格的选择

其中 chai 又有好几种断言风格, 咱们常常见到的其实就是 BDD 风格的 should / expect.node

其中我较喜欢 should, 由于它能够直接以属性的方式嵌入全部内置原生对象, 因此能够很方便的以 variable.should.equal(someValue) 的形式来书写断言, 和 expect 相比较能够省略一对 () ... 若是是 expect 风格的话, 上述示例代码等价于 expect(variable).to.equal(someValue). 在通常状况下二者的使用时几乎相同的, expect 做为断言的开始, should 接在想要断言的变量以后. 可是有一些地方 should 就须要变换一下我上述所说的写法了.webpack

Should

should 其实是给全部的对象都扩充了一个 getter 属性 should, 若是你想在浏览器中运行测试的话, should 在 IE 浏览器中会有一些问题. 正是由于 should 是扩充了 Object.prototype, 因此若是变量的值为 nullundefined 的时候, 是没法使用 .should.equal() 的形式的, 由于 null, undefined 的原型不是 Object,因此should 不存在. 因此此时应当以下所示使用.ios

const sould = require('chai').should();

...

should.not.exist.(variable); // variable 的值不该该是 null 或者 undefined

Mocha

如今咱们来看看如何对 mocha 进行配置以及上手的步骤. 我假定在 mocha 中写测试的时候也一样须要使用 ES6 语法, 还有一个关注点是若是我在 webpack.config.js 中已经设置了 alias, 那么在写测试代码的时候, 我但愿导入的文件也可使用 alias 来保持我路径的一致性以及与此同时带来的便利性.git

配置

下载依赖

npm install --save-dev mocha chai

接下来只要在项目根目录下新建文件夹 test, 在里面写的测试文件以 *.test.js 命名, 接下来在 packag.json 文件中 配置 npm test 命令.github

"npm test": "./node_modules/.bin/mocha"

还能够在 test 根目录下新建一个配置文件 mocha.opts, 其中配置的选项至关于给 mocha 命令加入了命令行参数.web

--recursive
--ui bdd

具体的配置请参照文档 Mocha - USAGE.ajax

以后在终端输入 npm run test 便可运行测试.shell

支持 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

结束

写的不多 ... 正在实践当中, 其实测试上述那个文件的时候我已经踩了一些坑了, 可是写出来仍是不够多, 等踩多了总结一下踩过的那些.

相关文章
相关标签/搜索