成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

前端測(cè)試框架mocha使用小結(jié)

asoren / 2287人閱讀

摘要:稱(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é)
使用mocha配合chai以及mocha-phantomjs可以很方便的對(duì)函數(shù)的執(zhí)行進(jìn)行一步一步的監(jiān)控,數(shù)值的類(lèi)型做限定。但是如果一旦設(shè)計(jì)到業(yè)務(wù)邏輯的測(cè)試和UI的測(cè)試,可能就有點(diǎn)力不從心了,業(yè)務(wù)功能測(cè)試需要數(shù)據(jù)源的支撐,一味的使用假數(shù)據(jù)很難覆蓋異常情況;而UI的測(cè)試雖然可以借助jq的trigger來(lái)模擬用戶(hù)行為,但是這顯然是個(gè)巨大的任務(wù)量,首先要在測(cè)試目錄下的html寫(xiě)入需要測(cè)試的dom元素,再寫(xiě)測(cè)試邏輯??赡芤粋€(gè)小時(shí)就完成的UI需要一天或者更長(zhǎng)的時(shí)間來(lái)寫(xiě)測(cè)試邏輯。
前端UI的自動(dòng)化測(cè)試還需慢慢探索,任重而道遠(yuǎn)。 前端技術(shù)交流群:709397872(歡迎加入)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92929.html

相關(guān)文章

  • 聊一聊前端自動(dòng)化測(cè)試

    摘要:在真正寫(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ě)了...

    wthee 評(píng)論0 收藏0
  • 探知js測(cè)試(3)

    摘要:模塊測(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è)...

    陳江龍 評(píng)論0 收藏0
  • 探知js測(cè)試(3)

    摘要:模塊測(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è)...

    pakolagij 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<