国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

探知JS測(cè)試(1)

bladefury / 913人閱讀

摘要:?jiǎn)卧獪y(cè)試這是測(cè)試類(lèi)型的一種,所謂的單元即,由一些函數(shù)組成能完成某項(xiàng)功能的模塊。單元測(cè)試的過(guò)程想好測(cè)試用例動(dòng)手寫(xiě)測(cè)試查看測(cè)試結(jié)果,通過(guò)則否則應(yīng)該進(jìn)行測(cè)試模式想說(shuō)一下,測(cè)試模式和單元測(cè)試的區(qū)別。測(cè)試模式包括單元測(cè)試通常測(cè)試模式有和模式。

有一定水平的js童鞋,應(yīng)該會(huì)經(jīng)常看到一些書(shū)上,在介紹項(xiàng)目的時(shí)候,會(huì)不由自主說(shuō)道測(cè)試。 比如,單元測(cè)試,函數(shù)測(cè)試,或是TDD,BDD等測(cè)試模式。
沒(méi)錯(cuò),這也是我們需要進(jìn)行掌握的。 當(dāng)然,如果你的項(xiàng)目?jī)H僅是寫(xiě)的幾個(gè)demo,而去寫(xiě)測(cè)試的話,這樣會(huì)有點(diǎn)浪費(fèi)時(shí)間,但是本人非常鼓勵(lì)這樣做,因?yàn)槟阍跍y(cè)試時(shí),會(huì)發(fā)現(xiàn)自己的代碼覆蓋率,在經(jīng)自己重構(gòu)的時(shí)候一點(diǎn)一點(diǎn)的變好。 這感覺(jué)是非常不一樣的。而且在大項(xiàng)目中,使用測(cè)試,無(wú)疑是產(chǎn)品和你撕逼是,你用來(lái)堵住他嘴的最佳手段。

單元測(cè)試

這是測(cè)試類(lèi)型的一種,所謂的單元即,由一些函數(shù)組成能完成某項(xiàng)功能的模塊。單元測(cè)試的目的就是保證你寫(xiě)的模塊能夠完成一定任務(wù)并且不出現(xiàn)bug. 另外,單元測(cè)試,也是單一職責(zé)原則的一個(gè)具體體現(xiàn),如果在你的代碼測(cè)試過(guò)程中,需要require多個(gè)模塊時(shí),這說(shuō)明你測(cè)試的主體模塊的耦合性比較高,這也是提醒你進(jìn)行重構(gòu)的flag。

單元測(cè)試的過(guò)程

想好測(cè)試用例

動(dòng)手寫(xiě)測(cè)試

查看測(cè)試結(jié)果,通過(guò)則Pass,否則應(yīng)該進(jìn)行repeat

測(cè)試模式

想說(shuō)一下,測(cè)試模式和單元測(cè)試的區(qū)別。
測(cè)試模式->(包括)單元測(cè)試.
通常測(cè)試模式有BDD和TDD模式。

TDD

TDD全稱(chēng)為T(mén)est-driven development即,測(cè)試驅(qū)動(dòng)開(kāi)發(fā). 這個(gè)可以算是自主測(cè)試,用來(lái)幫助你寫(xiě)出好代碼的一個(gè)非常好的辦法。 也是上文說(shuō)到的,當(dāng)自己看到自己的代碼覆蓋率越來(lái)越高的時(shí)候,心里應(yīng)該是滿(mǎn)滿(mǎn)的自豪感。
通常的測(cè)試步驟應(yīng)該是:

先寫(xiě)測(cè)試

再寫(xiě)代碼

測(cè)試

重構(gòu)

通過(guò)
而在大部分公司里面,通常使用的是BDD測(cè)試。這里先對(duì)BDD進(jìn)行講解,后面會(huì)將TDD進(jìn)行探索。

BDD

同樣BDD的全稱(chēng)為: Behavior-Driven development。 樸素的說(shuō)法叫做行為驅(qū)動(dòng)開(kāi)發(fā)。 BDD的應(yīng)用場(chǎng)景就是給一些QA工程師使用的,他用他的語(yǔ)言和你進(jìn)行交流,即他會(huì)進(jìn)行一些測(cè)試用例,然后如果通過(guò)則說(shuō)明,他已經(jīng)信賴(lài)你了。
通常BDD測(cè)試提供了幾個(gè)方法:

describe() {alias: behavior()}

it()

before()

after()

beforeEach()

afterEach()
通過(guò)上面幾個(gè)方法,說(shuō)一下BDD測(cè)試應(yīng)該了解哪些基本概念.

測(cè)試套件
在TDD里面是指的是test suit. 在BDD里面就對(duì)應(yīng)describe(),用來(lái)對(duì)軟件某個(gè)方面的描述。
不懂吧~
針對(duì)于describe我們具體來(lái)說(shuō)一下吧。 describe接受兩個(gè)參數(shù), 一個(gè)是字符串,另外一個(gè)是函數(shù)。

describe("Action",function(){
    //...
})

那第一個(gè)字符串是開(kāi)發(fā)者自己寫(xiě),那么該怎么寫(xiě)呢?
很簡(jiǎn)單,我們需要明白,我們是要給一個(gè)測(cè)試套件命名。 即,給一篇文章寫(xiě)一個(gè)title一樣簡(jiǎn)單。
比如,我的一個(gè)測(cè)試套件是想測(cè)試一個(gè)計(jì)數(shù)框架的一些功能。
那我們的describe就可以寫(xiě)為Counter(或者"計(jì)數(shù)",一些你自己覺(jué)得合適的title),像這樣:

describe("Counter",function(){
    it("it should increase",function(){
        //...
    })
    it("it should decrease",function(){
        //...
    })
})

那么,我們起好標(biāo)題之后,該干什么呢?
首先,該空兩格~
接著,就應(yīng)該開(kāi)始使用測(cè)試用例來(lái)寫(xiě)文章的body了。
測(cè)試用例
it就是測(cè)試用例的weapon, 它和describe相似,接受兩個(gè)參數(shù)。 第一個(gè)是對(duì)測(cè)試的描述,第二個(gè)就是具體實(shí)現(xiàn)。

describe("Counter",function(){
    it("it should increase",function(){
        //...
    })
})

同樣,it里面的內(nèi)容該怎么寫(xiě)呢?
我想這不是我的任務(wù),你可以去問(wèn)下你的語(yǔ)文老師(或者英語(yǔ)老師).
其實(shí),你是用describe和it就已經(jīng)可以寫(xiě)出一篇好文章了。唯一欠缺的就是需要在里面填上一些內(nèi)容。這時(shí)候就需要使用到斷言庫(kù)來(lái)幫你造句了。
市面上流行的斷言庫(kù)有3個(gè),分別是assert,expect,should. 如果學(xué)過(guò)nodeJS的童鞋應(yīng)該知道NodeJS自帶assert斷言庫(kù)。但是對(duì)于本人而言,覺(jué)得expect比起assert那種傻逼的寫(xiě)法,看起來(lái)還是蠻舒服了。(當(dāng)然,should也有人使用,關(guān)鍵看你的趣了).
先show show 這3個(gè)的風(fēng)格吧。
比如判斷相等的寫(xiě)法:

//assert
assert.equal(cal.result,1);
//expect
expect(cal.result).to.equal(1);
//should
cal.result.shoulde.equal(1)

接下來(lái)就看自己的喜好挑一種吧。
ok~
還記得BDD提供幾個(gè)API嗎? 沒(méi)錯(cuò),還有before,after,beforeEach,afterEach他們分別是干什么用的呢?
我這里就應(yīng)用,官方mocha的demo.

describe("hooks", function() {

  before(function() {
    // runs before all tests in this block
  });

  after(function() {
    // runs after all tests in this block
  });

  beforeEach(function() {
    // runs before each test in this block
  });

  afterEach(function() {
    // runs after each test in this block
  });

  // test cases
});

按照摸cha的說(shuō)法,上面說(shuō)的這些函數(shù)都是hook. 將測(cè)試的狀態(tài)點(diǎn)暴露給你,讓你可以進(jìn)行相關(guān)的操作。 同樣,官方摸cha也舉例說(shuō)明了他們的用途。 比如在數(shù)據(jù)庫(kù)打開(kāi)的時(shí)候,就可以使用beforeEach來(lái)進(jìn)行更新。

beforeEach(function(done) {
    db.clear(function(err) {
      if (err) return done(err);
      db.save([tobi, loki, jane], done);
    });
  });

要記住,beforeEach會(huì)在當(dāng)前的Block下的所有case之前執(zhí)行,不管你嵌套多少層。
上面的理論鋪墊完了,我們要正式進(jìn)入,測(cè)試的節(jié)奏.

mocha框架

首先,我們運(yùn)行的一切測(cè)試,都需要有一個(gè)環(huán)境支持,那么mocha就是你的環(huán)境。 它應(yīng)該算是前端測(cè)試super 流行的一個(gè)框架吧(當(dāng)然,還有jasmine,zuul等). 因?yàn)閮?nèi)容豐富,顯示界面友好,所以,用戶(hù)也是很多的。
下載mocha環(huán)境:

sude npm install -g mocha

這里執(zhí)行全局下載。因?yàn)椋瑴y(cè)試環(huán)境在全局都是有效的,所以這里就直接放在global下了.
配置assertion
這里我們就使用chai就over了,他包括了3種語(yǔ)言風(fēng)格,你自己引用就可以了。

sudo npm install -g chai

OK。接下來(lái),先寫(xiě)一個(gè)hello world 示例吧。
我們按上述步驟一步一步來(lái).

//自己測(cè)試的代碼
var Cal = (function(){
    var num = {
        base:0
    };
    var add = function(){
        num.base++;
        return num.base;
    }
    var desc = function(){
        --num.base;
        return num.base;
    }
    return {
        add,desc,num
    }
})();
//ok,現(xiàn)在引用斷言庫(kù)chai
var expect = require("chai").expect;
//寫(xiě)出測(cè)試
describe("Counter",function(){
    it("it should increase",function(){
        expect(Cal.num.base).to.below(Cal.add());
    })
    it("it should decrease",function(){
        expect(Cal.num.base).to.above(Cal.desc());
    })
})

ok,現(xiàn)在可以打開(kāi)控制臺(tái),切換到你測(cè)試文件所在的目錄,比如,我的是在 demo/demo.js
在控制臺(tái)輸入命令

mocha demo.js

如果你的屏幕出現(xiàn)如下:(僅限MAC用戶(hù))

說(shuō)明你的virgin測(cè)試已經(jīng)完成了。
今天就到這吧,整體的介紹了BDD的測(cè)試,斷言庫(kù),測(cè)試框架,后續(xù)會(huì)深入介紹斷言庫(kù)和測(cè)試框架。
ending~

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/8713.html

相關(guān)文章

  • 探知JS測(cè)試(1)

    摘要:?jiǎn)卧獪y(cè)試這是測(cè)試類(lèi)型的一種,所謂的單元即,由一些函數(shù)組成能完成某項(xiàng)功能的模塊。單元測(cè)試的過(guò)程想好測(cè)試用例動(dòng)手寫(xiě)測(cè)試查看測(cè)試結(jié)果,通過(guò)則否則應(yīng)該進(jìn)行測(cè)試模式想說(shuō)一下,測(cè)試模式和單元測(cè)試的區(qū)別。測(cè)試模式包括單元測(cè)試通常測(cè)試模式有和模式。 有一定水平的js童鞋,應(yīng)該會(huì)經(jīng)常看到一些書(shū)上,在介紹項(xiàng)目的時(shí)候,會(huì)不由自主說(shuō)道測(cè)試。 比如,單元測(cè)試,函數(shù)測(cè)試,或是TDD,BDD等測(cè)試模式。沒(méi)錯(cuò),這也是...

    xingpingz 評(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
  • 探知JS測(cè)試(2)

    摘要:針對(duì)于類(lèi)型已經(jīng)出啦個(gè)方法來(lái)判斷在各種庫(kù)里,也出現(xiàn)了想等語(yǔ)義判斷。在斷言庫(kù)里,類(lèi)型判斷也是必不可少的一部分。測(cè)試用例應(yīng)該會(huì)。在下一個(gè)測(cè)試套件內(nèi),還是依照默認(rèn)值。 前一篇文章,我們已經(jīng)簡(jiǎn)單的闡述了BDD,TDD以及mocha測(cè)試框架,chai斷言庫(kù). 這里我們將進(jìn)一步深入,比較全部的了解測(cè)試的API。前文,我們已經(jīng)知道了,BDD本身可以比擬為文章的骨架,而chai斷言庫(kù)就是骨架里面的血管和...

    TZLLOG 評(píng)論0 收藏0
  • 探知JS測(cè)試(2)

    摘要:針對(duì)于類(lèi)型已經(jīng)出啦個(gè)方法來(lái)判斷在各種庫(kù)里,也出現(xiàn)了想等語(yǔ)義判斷。在斷言庫(kù)里,類(lèi)型判斷也是必不可少的一部分。測(cè)試用例應(yīng)該會(huì)。在下一個(gè)測(cè)試套件內(nèi),還是依照默認(rèn)值。 前一篇文章,我們已經(jīng)簡(jiǎn)單的闡述了BDD,TDD以及mocha測(cè)試框架,chai斷言庫(kù). 這里我們將進(jìn)一步深入,比較全部的了解測(cè)試的API。前文,我們已經(jīng)知道了,BDD本身可以比擬為文章的骨架,而chai斷言庫(kù)就是骨架里面的血管和...

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

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

0條評(píng)論

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