使用 Karma、Mocha、Chai 搭建支援 ES6 的測試環境
前端開發很多是介面開發,但我們可以將相對獨立的邏輯和功能從整體業務邏輯中獨立出來,這樣就可以對它們做單元測試。使用 Karma 可以比較方便地搭建出測試環境。
安裝 Karma
使用 Karma
Mocha
Chai
(啟動器、測試框架、斷言庫)組合。
npm install karma karma-mocha karma-chai --save-dev
如果 npm 版本 >=3.0,會看到如下提示:
UNMET PEER DEPENDENCY chai@*
karma@1.2.0
karma-chai@0.1.0
karma-mocha@1.1.1
UNMET PEER DEPENDENCY mocha@*
於是繼續安裝 mocha
chai
npm install mocha chai --save-dev
初始化 Karma
karma init
然後要回答一系列問題。
Which testing framework do you want to use ? Press tab to list possible options. Enter to move to the next question.
> mochaDo you want to use Require.js ? This will add Require.js plugin. Press tab to list possible options. Enter to move to the next question.
> noDo you want to capture any browsers automatically ? Press tab to list possible options. Enter empty string to move to the next question.
> ChromeWhat is the location of your source and test files ? You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js". Enter empty string to move to the next question. > "test/**/*.spec.js" 01 09 2016 16:43:20.743:WARN [init]: There is no file matching this pattern.
>
Should any of the files included by the previous patterns be excluded ? You can use glob patterns, eg. "**/*.swp". Enter empty string to move to the next question.
>Do you want Karma to watch all the files and run the tests on change ? Press tab to list possible options.
> yes
然後就可以看到 Karma
已經建立的配置檔案 karma.conf.js
。如果選擇使用 PhantomJS
,需要單獨安裝。
新增 ES6 支援
現在前端開發的原始碼一般使用了 ES6 甚至 ES7,將這個處理工作用 webpack 搞定。
npm install karma-webpack --save-dev
既然將 ES6 的處理交給 webpack,如果之前沒有安裝過 babel 環境,還需要安裝 babel-core
babel-preset-es2015
以及 babel-loader
。
如果出現下面的 TypeError
錯誤,只要在 exclude 中加入 /node_modules/ 就好了。
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
配置檔案 karma.conf.js
中,需要注意的還有 files
preprocessors
以及 webpack
部分。
// Karma configuration
module.exports = function(config) {
config.set({
// ......
files: [
'test/**/*.spec.js'
],
preprocessors: {
'test/**/*.spec.js': ['webpack']
},
webpack: {
resolve: {
root: __dirname + "/src"
},
module: {
loaders: [{
test: /\.js$/,
exclude: [/node_modules/, __dirname + "xxx/xxx/lib"],
loader: "babel-loader",
query: {
compact: false,
presets: ["es2015"],
plugins: ["es6-promise"]
}
}]
}
},
// ......
})
}
啟動 Karma
編寫測試用例,這裡是一個使用斷言庫 Chai
,並使用它的 expect
斷言風格的例子。
import {getMoneyText} from "xxx/xxx.js";
import {expect} from "chai";
describe("生成價格文案", () => {
it("價格文案:積分", () => {
expect(getMoneyText({
payType: 1,
price: 100,
points: 100,
})).to.be.equal("100積分");
});
it("價格文案:人民幣", () => {
expect(getMoneyText({
payType: 2,
price: 100,
points: 100,
})).to.be.equal("¥100.00");
});
it("價格文案:人民幣+積分", () => {
expect(getMoneyText({
payType: 3,
price: 100,
points: 100,
})).to.be.equal("¥100.00+100積分");
});
it("價格文案:人民幣+積分(多份數量)", () => {
expect(getMoneyText({
payType: 3,
number: 5,
price: 100,
points: 100,
})).to.be.equal("¥500.00+500積分");
});
});
啟動 Karma
karma start
關於 Mocha (Chai, expect)的入門教程可以參考:測試框架 Mocha 例項教程
相關文章
- 搭建 vue2 單元測試環境(karma+mocha+webpack3)VueWeb
- 單元測試 -- mocha + chaiAI
- 前端單元測試之Karma環境搭建前端
- 大前端的自動化工廠(5)—— 基於Karma+Mocha+Chai的單元測試和介面測試前端AI
- 使用Karma、Mocha實現vue單元測試Vue
- 前端測試簡述及使用Karma/Mocha實現的整合測試栗子(Travis CI/Coverage)前端
- 用 Mocha 和 Chai 對 JavaScript 程式碼進行單元測試AIJavaScript
- kaldi環境搭建 | yesno 測試
- android測試環境搭建Android
- OCM實驗-測試環境的搭建
- 搭建rac+DataGuard的測試環境
- griffin環境搭建及功能測試
- 搭建自動化測試環境
- 入門:前端自動化測試karma,Backstopjs,Selenium-webdriver,Mocha前端JSWeb
- 如何搭建良好的軟體測試環境?測試環境對軟體測試起到什麼作用?
- 達夢6.0試用之測試環境搭建
- 軟體測試培訓:如何搭建測試環境
- 搭建Karma+Jasmine的自動化單元測試ASM
- ES6的開發環境搭建開發環境
- 新手搭建 kubernetes 測試環境
- 你真的會搭建測試環境嗎?
- DVWA下載、安裝、使用(漏洞測試環境搭建)教程
- 搭建測試環境後出現的問題
- PCIE XDMA 開發環境搭建以及環路測試開發環境
- fio效能測試-環境搭建,功能介紹,測試講解
- 自動化測試 selenium 環境搭建
- TestNG+Maven+IDEA環境搭建+測試MavenIdea
- WebSphere MQ傳輸環境搭建和測試WebMQ
- docker搭建大規模測試環境的實踐Docker
- httprunner測試框架(一):支援不同環境執行HTTP框架
- 在不使用網線的mac上搭建IPv6測試環境Mac
- 想要軟體測試效果好,搭建好測試環境是前提
- 學習測試框架Mocha框架
- lustre檔案系統環境搭建及測試
- 如何快速搭建微服務開發測試環境微服務
- jenkins+ANT+jmeter 介面測試環境搭建JenkinsJMeter
- kafka學習筆記1:測試環境搭建Kafka筆記
- MySQL InnoDB Cluster環境搭建和簡單測試MySql