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

結束

寫的不多 ... 正在實踐當中, 其實測試上述那個文件的時候我已經踩了一些坑了, 可是寫出來仍是不夠多, 等踩多了總結一下踩過的那些.

相關文章
相關標籤/搜索