摘要:稱為測試用例,表示一個多帶帶的測試,是測試的最小單位。它使用的瀏覽器環境,通過事件監聽的方式檢測測試的執行過程。前端的自動化測試還需慢慢探索,任重而道遠。前端技術交流群歡迎加入
安裝
npm i -g mocha npm i chai -D //斷言庫模塊測試
比如有一個add函數
//add.js function add(a, b){ return a + b } module.exports = add
新建一個測試文件add.test.js(一般測試文件命名都是以被測文件后加.test后綴)
describe:稱為"測試套件"(test suite),表示一組相關的測試。它是一個函數,第一個參數是測試套件的名稱("加法函數的測試"),第二個參數是一個實際執行的函數。
it:稱為"測試用例"(test case),表示一個多帶帶的測試,是測試的最小單位。
// add.test.js var add = require("./add.js") var expect = require("chai").expect; describe("add功能測試", function(){ it("1 + 1 = 2", function(){ expect(add(1, 1)).to.be.equal(2) //斷言庫的用法 }); it("返回值為數字", function(){ expect(add(1, 1)).to.be.a("number") }); })
chai中的expect模塊的語法很接近自然語言的風格,常見的有:
// 相等或不相等 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/);
以上方法可以很輕松的測試封裝的方法和模塊
基于瀏覽器的測試,如ajax在這里使用我自己的ajax庫 baby-ajax
mocha-phantomjs:是一個 通過 PhantomJS 執行 mocha 瀏覽器環境測試的工具庫。它使用 PhantomJS 的瀏覽器環境,通過事件監聽的方式檢測 mocha 測試的執行過程。
mocha-phantomjs-core:是 mocha-phantomjs的核心依賴庫。作者將它多帶帶提取出來,是因為它也可以支持 SlimerJS。
SlimerJS :基于的 Gecko 內核(Firefox)的與 PhantomJS 的 API 幾乎相同的工具,而且SlimerJS在執行過程中默認會啟動有界面的瀏覽器窗體,可以看到整個執行過程
npm i baby-ajax mocha-phantomjs-core mocha-phantomjs -D
在項目目錄下創建測試目錄
mocha init test
mocha會自己為我們創建測試模板,包含html,css,js
手動引用mocha.js,chai.js,和自己的測試js
//ajax.test.js var Ajax = require("../example/static/ajax.js"); var expect = require("chai").expect; expect(Ajax).to.be.an("object"); describe("get測試", function(done){ Ajax.get("./data.json") .then(function(res){ expect(res).to.have.include.keys("data","status") //返回值必須有兩個key,一個是data,一個是status done() }, function(){ expect(res).to.have.include.keys("data","status") done() }) })
這樣就可以在node中模擬瀏覽器環境,從而可以獲取在瀏覽器中的對象,如window等
總結文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92929.html
摘要:在真正寫了一段時間的基礎組件和基礎工具后,才發現自動化測試有很多好處。有了自動化測試,開發者會更加信任自己的代碼。由于維護測試用例也是一大筆開銷畢竟沒有多少測試會專門幫前端寫業務測試用例,而前端使用的流程自動化工具更是沒有測試參與了。 本文轉載自 天貓前端博客,更多精彩文章請進入天貓前端博客查看 前言 為何要測試 以前不喜歡寫測試,主要是覺得編寫和維護測試用例非常的浪費時間。在真正寫了...
閱讀 3118·2021-11-15 18:14
閱讀 1773·2021-09-22 10:51
閱讀 3283·2021-09-09 09:34
閱讀 3505·2021-09-06 15:02
閱讀 1013·2021-09-01 11:40
閱讀 3186·2019-08-30 13:58
閱讀 2523·2019-08-30 11:04
閱讀 1081·2019-08-28 18:31