mocha誕生于2011年,是現(xiàn)在最流行的JavaScript測(cè)試框架之一紊扬,在瀏覽器和node環(huán)境都可以使用
安裝node.js和npm后執(zhí)行安裝mocha命令:
install --global?mocha
驗(yàn)證mocha環(huán)境是否配置成功
官網(wǎng)給出的代碼示例:
varassert=require("assert");
describe('Array',function(){
describe('#indexOf()',function(){
it('should return -1 when the value is not present',function(){
assert.equal(-1,[1,2,3].indexOf(5));
assert.equal(-1,[1,2,3].indexOf(0));
})
})});
打開cmd執(zhí)行命令:
mocha?test.js
如上表示mocha的測(cè)試環(huán)境已經(jīng)ok
Describe(moudlename馅闽,testDetails)由上述代碼可以看出际长,describe是可以嵌套的,比如上述代碼嵌套的兩個(gè)describe就可以理解成測(cè)試人員希望測(cè)試Array模塊下的#indexof()子模塊析命。moudle_name是可以隨便取的主卫,關(guān)鍵是要讓人讀明白就好
It(info,function)具體的測(cè)試語(yǔ)句會(huì)放在it的回調(diào)函數(shù)里鹃愤,一般來(lái)說(shuō)info字符串寫期望的正確輸出的簡(jiǎn)要依據(jù)話文字說(shuō)明簇搅。當(dāng)該it block內(nèi)的test failed的時(shí)候控制臺(tái)就會(huì)把詳細(xì)信息打印出來(lái)。一般是從最外層的describe的moudle_name開始輸出软吐,最后輸出info瘩将,表示該期望的info內(nèi)容沒有被滿足,一個(gè)it對(duì)應(yīng)一個(gè)實(shí)際的test case
Assert.equal(exp1,exp2)斷言判斷exp1結(jié)果是否等于exp2凹耙,這里采取的等于判斷是==而并非===姿现。即assert.equal(1,‘1’)認(rèn)為是true肖抱。這只是nodejs里的assert.js的一種斷言形式备典,之后會(huì)提到比較常用的should.js
如果exp1he exp2均為字符串,字符串比較出錯(cuò)時(shí)則控制臺(tái)會(huì)用顏色把相異的部分標(biāo)注出來(lái)
試驗(yàn)示例:
創(chuàng)建一個(gè)add.js
創(chuàng)建一個(gè)測(cè)試腳本test.js
varadd=require('./add.js');
varexpect=require('chai').expect;describe('加法函數(shù)的測(cè)試',function() {it('1加1等于2',function() {expect(add(1,1)).to.be.equal(2);});});
在cmd中執(zhí)行命令:mocha?test.js