摘要:稱(chēng)為測(cè)試用例,表示一個(gè)多帶帶的測(cè)試,是測(cè)試的最小單位。它使用的瀏覽器環(huán)境,通過(guò)事件監(jiān)聽(tīng)的方式檢測(cè)測(cè)試的執(zhí)行過(guò)程。前端的自動(dòng)化測(cè)試還需慢慢探索,任重而道遠(yuǎn)。前端技術(shù)交流群歡迎加入
安裝
npm i -g mocha npm i chai -D //斷言庫(kù)模塊測(cè)試
比如有一個(gè)add函數(shù)
//add.js function add(a, b){ return a + b } module.exports = add
新建一個(gè)測(cè)試文件add.test.js(一般測(cè)試文件命名都是以被測(cè)文件后加.test后綴)
describe:稱(chēng)為"測(cè)試套件"(test suite),表示一組相關(guān)的測(cè)試。它是一個(gè)函數(shù),第一個(gè)參數(shù)是測(cè)試套件的名稱(chēng)("加法函數(shù)的測(cè)試"),第二個(gè)參數(shù)是一個(gè)實(shí)際執(zhí)行的函數(shù)。
it:稱(chēng)為"測(cè)試用例"(test case),表示一個(gè)多帶帶的測(cè)試,是測(cè)試的最小單位。
// add.test.js var add = require("./add.js") var expect = require("chai").expect; describe("add功能測(cè)試", function(){ it("1 + 1 = 2", function(){ expect(add(1, 1)).to.be.equal(2) //斷言庫(kù)的用法 }); it("返回值為數(shù)字", function(){ expect(add(1, 1)).to.be.a("number") }); })
chai中的expect模塊的語(yǔ)法很接近自然語(yǔ)言的風(fēng)格,常見(jiàn)的有:
// 相等或不相等 expect(4 + 5).to.be.equal(9); expect(4 + 5).to.be.not.equal(10); expect(foo).to.be.deep.equal({ bar: "baz" }); // 布爾值為true expect("everthing").to.be.ok; expect(false).to.not.be.ok; // typeof expect("test").to.be.a("string"); expect({ foo: "bar" }).to.be.an("object"); expect(foo).to.be.an.instanceof(Foo); // include expect([1,2,3]).to.include(2); expect("foobar").to.contain("foo"); expect({ foo: "bar", hello: "universe" }).to.include.keys("foo"); // empty expect([]).to.be.empty; expect("").to.be.empty; expect({}).to.be.empty; // match expect("foobar").to.match(/^foo/);
以上方法可以很輕松的測(cè)試封裝的方法和模塊
基于瀏覽器的測(cè)試,如ajax在這里使用我自己的ajax庫(kù) baby-ajax
mocha-phantomjs:是一個(gè) 通過(guò) PhantomJS 執(zhí)行 mocha 瀏覽器環(huán)境測(cè)試的工具庫(kù)。它使用 PhantomJS 的瀏覽器環(huán)境,通過(guò)事件監(jiān)聽(tīng)的方式檢測(cè) mocha 測(cè)試的執(zhí)行過(guò)程。
mocha-phantomjs-core:是 mocha-phantomjs的核心依賴(lài)庫(kù)。作者將它多帶帶提取出來(lái),是因?yàn)樗部梢灾С?SlimerJS。
SlimerJS :基于的 Gecko 內(nèi)核(Firefox)的與 PhantomJS 的 API 幾乎相同的工具,而且SlimerJS在執(zhí)行過(guò)程中默認(rèn)會(huì)啟動(dòng)有界面的瀏覽器窗體,可以看到整個(gè)執(zhí)行過(guò)程
npm i baby-ajax mocha-phantomjs-core mocha-phantomjs -D
在項(xiàng)目目錄下創(chuàng)建測(cè)試目錄
mocha init test
mocha會(huì)自己為我們創(chuàng)建測(cè)試模板,包含html,css,js
手動(dòng)引用mocha.js,chai.js,和自己的測(cè)試js
//ajax.test.js var Ajax = require("../example/static/ajax.js"); var expect = require("chai").expect; expect(Ajax).to.be.an("object"); describe("get測(cè)試", function(done){ Ajax.get("./data.json") .then(function(res){ expect(res).to.have.include.keys("data","status") //返回值必須有兩個(gè)key,一個(gè)是data,一個(gè)是status done() }, function(){ expect(res).to.have.include.keys("data","status") done() }) })
這樣就可以在node中模擬瀏覽器環(huán)境,從而可以獲取在瀏覽器中的對(duì)象,如window等
總結(jié)文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92929.html
摘要:在真正寫(xiě)了一段時(shí)間的基礎(chǔ)組件和基礎(chǔ)工具后,才發(fā)現(xiàn)自動(dòng)化測(cè)試有很多好處。有了自動(dòng)化測(cè)試,開(kāi)發(fā)者會(huì)更加信任自己的代碼。由于維護(hù)測(cè)試用例也是一大筆開(kāi)銷(xiāo)畢竟沒(méi)有多少測(cè)試會(huì)專(zhuān)門(mén)幫前端寫(xiě)業(yè)務(wù)測(cè)試用例,而前端使用的流程自動(dòng)化工具更是沒(méi)有測(cè)試參與了。 本文轉(zhuǎn)載自 天貓前端博客,更多精彩文章請(qǐng)進(jìn)入天貓前端博客查看 前言 為何要測(cè)試 以前不喜歡寫(xiě)測(cè)試,主要是覺(jué)得編寫(xiě)和維護(hù)測(cè)試用例非常的浪費(fèi)時(shí)間。在真正寫(xiě)了...
摘要:模塊測(cè)試模塊語(yǔ)法我這里提及一點(diǎn)。基本工程目錄一個(gè)良好的工程目錄,能夠幫助你測(cè)試成本降到最低。這一塊算是獨(dú)立于單元測(cè)試的。 前面兩篇已經(jīng)把,js測(cè)試的模式,框架,斷言庫(kù)基本介紹了一遍。這里,我們要上升到整體測(cè)試架構(gòu)上來(lái).首先,單元測(cè)試的對(duì)象是模塊,這里我們就要將自己測(cè)試目標(biāo)調(diào)整到對(duì)模塊測(cè)試上來(lái)。所以,這里我們需要使用CommonJS或者es6的模塊的寫(xiě)法了。另外需要了解,mocha框架測(cè)...
摘要:模塊測(cè)試模塊語(yǔ)法我這里提及一點(diǎn)?;竟こ棠夸浺粋€(gè)良好的工程目錄,能夠幫助你測(cè)試成本降到最低。這一塊算是獨(dú)立于單元測(cè)試的。 前面兩篇已經(jīng)把,js測(cè)試的模式,框架,斷言庫(kù)基本介紹了一遍。這里,我們要上升到整體測(cè)試架構(gòu)上來(lái).首先,單元測(cè)試的對(duì)象是模塊,這里我們就要將自己測(cè)試目標(biāo)調(diào)整到對(duì)模塊測(cè)試上來(lái)。所以,這里我們需要使用CommonJS或者es6的模塊的寫(xiě)法了。另外需要了解,mocha框架測(cè)...
閱讀 3133·2021-11-15 18:14
閱讀 1786·2021-09-22 10:51
閱讀 3301·2021-09-09 09:34
閱讀 3516·2021-09-06 15:02
閱讀 1035·2021-09-01 11:40
閱讀 3195·2019-08-30 13:58
閱讀 2535·2019-08-30 11:04
閱讀 1090·2019-08-28 18:31