|
導讀微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺... 微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺通過網絡快速發送免費(需消耗少量網絡流量)語音短信、視頻、圖片和文字,同時,也可以使用通過共享流媒體內容的資料和基于位置的社交插件“搖一搖”、“漂流瓶”、“朋友圈”、”公眾平臺“、”語音記事本“等服務插件。 這次給大家帶來Mocha與chai的使用,Mocha與chai使用的注意事項有哪些,下面就是實戰案例,一起來看一下。Mocha 的簡介Mocha是流行的JavaScript測試框架之一,通過它添加和運行測試,從而保證代碼質量 Mocha 的安裝與配置全局安裝Mocha npm install -g mocha 項目中也安裝Mocha npm install --save-dev mocha 在package.json中加入下面腳本: "scripts": {
"test": "mocha"
}Mocha 的使用在使用前,我們先看一下我們用來使用的測試項目的結構: 如上圖所示,測試文件需要放在test目錄下,mocka運行時會執行test目錄下的所有js文件(僅限于test以下這一層級,對test/subtest這一層級并不執行)。 其中index.js為我們的被測試代碼: /**
* 加法函數
* @param {第一個數} a
* @param {第二個數} b
*/
function addNum(a,b){
return a+b;
}
module.exports=addNum;而index.test.js為我們的測試代碼(注意這里的命名加了一個test,并不是必須的,只是為了好區分哪些是測試文件): var addNum=require('../src/index')
describe('測試index.js', function() {
describe('測試addNum函數', function() {
it('兩數相加結果為兩個數字的和', function() {
if(addNum(1,2)!==3){
throw new Error("兩數相加結果不為兩個數字的和");
}
});
});
});解析一下以上代碼的語法:
在上面的例子中,測試addNum函數,如果運行錯誤就拋出異常 此時運行 npm test 就可得到以下結果 為了看一下運行錯誤的結果,此時我們修改index.js的代碼為: function addNum(a,b){
return a+b-1;
}
module.exports=addNum;再次運行 npm test 結果如下: Mocha與斷言庫chai在上面的Mocha例子中,測試失敗用拋異常來處理,多少有點繁瑣,所以就有了斷言庫的出現。 npm install --save-dev chai 接著讓我們用chai修改一下上面的index.test.js: var expect = require('chai').expect;
var addNum=require('../src/index')
describe('測試index.js', function() {
describe('測試addNum函數', function() {
it('兩數相加結果為兩個數字的和', function() {
expect(addNum(1,2)).to.be.equal(3);
});
});
});上面的語法很接近自然語言,expect(期待)一個表達式的結果equal(等于)一個表達式。 npm test 得到以下結果: 可以看出圖中的斷言庫還打印出了期望的結果3和實際的結果2。 以上語法為chai的expect語法,它還有should語法和asset語法。 var assert = require('chai').assert;
assert.typeOf(foo, 'string');
assert.equal(foo, 'bar');
assert.lengthOf(foo, 3)
assert.property(tea, 'flavors');
assert.lengthOf(tea.flavors, 3);這其中的語法意思很明顯,這里就不再贅述了。 Mocha的更多使用如果想測試單一的測試js,可以用: mocha test/index.test.js 或者多個js mocha test/index.test.js test/add.test.js 當然也可以用通配符測試某個文件夾下所有的js和jsx: mocha 'test/some/*.@(js|jsx)' Mocha與ES6在上面我們用的并非是ES6的語法,那么讓我們把其中的代碼都改為ES6的語法。 /**
* 加法函數
* @param {第一個數} a
* @param {第二個數} b
*/
export default (a,b)=>{
return a+b-1;
}而index.test.js為: import {assert} from 'chai'
import addNum from '../src/index'
describe('測試index.js',()=> {
describe('測試addNum函數', ()=> {
it('兩數相加結果為兩個數字的和', ()=> {
assert.equal(addNum(1,2),3)
})
})
})此時直接運行mock肯定是不行的,我們現需要安裝一下babel: npm install babel-core babel-preset-es2015 --save-dev 然后,在項目目錄下面,新建一個.babelrc文件: {
"presets": [ "es2015" ]
}接著講package.json中的腳本改為: "scripts": {
"test": "mocha --compilers js:babel-core/register"
},其中--compilers參數用來指定測試腳本的轉碼器,這行命令的意思是運行mocha時先用babel-core/register模塊,處理一下.js文件 注意: "scripts": {
"test": "mocha --require babel-core/register"
},命令變得更加簡單了 Mocha測試用例執行的超時和高亮Mocha默認每個測試用例最多執行2000毫秒,如果到時沒有得到結果,就報錯。以下命令設置超時時間為5000: mocha -t 5000 index.test.js Mocha默認會高亮顯示超過75毫秒的測試用例,以下命令設置高亮判斷的臨界值: mocha -s 1000 index.test.js Mocha測試的鉤子Mocha在describe塊之中,提供測試用例的四個鉤子:before()、after()、beforeEach()和afterEach()。它們會在指定時間執行。 describe('測試index.js',()=> {
before(()=>console.info("在本區塊的所有測試用例之前執行"))
after(()=>console.info("在本區塊的所有測試用例之后執行"))
beforeEach(()=>console.info("在本區塊的每個測試用例之前執行"))
afterEach(()=>console.info("在本區塊的每個測試用例之后執行"))
describe('測試addNum函數', ()=> {
it('兩數相加結果為兩個數字的和', ()=> {
assert.equal(addNum(1,2),3)
})
})
})小結關于mock和chai常用的一些玩法都講了,更多的關于mock的測試結果輸出格式,以及skip跳過測試和only僅測試當前用例等玩法就不講述了。 相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! 推薦閱讀: 以上就是Mocha與chai的使用的詳細內容,更多請關注php中文網其它相關文章! 微信提供公眾平臺、朋友圈、消息推送等功能,用戶可以通過“搖一搖”、“搜索號碼”、“附近的人”、掃二維碼方式添加好友和關注公眾平臺,同時微信將內容分享給好友以及將用戶看到的精彩內容分享到微信朋友圈。 |
溫馨提示:喜歡本站的話,請收藏一下本站!