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

資訊專欄INFORMATION COLUMN

探知JS測試(1)

bladefury / 907人閱讀

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

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

單元測試

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

單元測試的過程

想好測試用例

動手寫測試

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

測試模式

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

TDD

TDD全稱為Test-driven development即,測試驅(qū)動開發(fā). 這個可以算是自主測試,用來幫助你寫出好代碼的一個非常好的辦法。 也是上文說到的,當(dāng)自己看到自己的代碼覆蓋率越來越高的時候,心里應(yīng)該是滿滿的自豪感。
通常的測試步驟應(yīng)該是:

先寫測試

再寫代碼

測試

重構(gòu)

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

BDD

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

describe() {alias: behavior()}

it()

before()

after()

beforeEach()

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

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

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

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

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

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

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

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

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

接下來就看自己的喜好挑一種吧。
ok~
還記得BDD提供幾個API嗎? 沒錯,還有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的說法,上面說的這些函數(shù)都是hook. 將測試的狀態(tài)點(diǎn)暴露給你,讓你可以進(jìn)行相關(guān)的操作。 同樣,官方摸cha也舉例說明了他們的用途。 比如在數(shù)據(jù)庫打開的時候,就可以使用beforeEach來進(jìn)行更新。

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

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

mocha框架

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

sude npm install -g mocha

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

sudo npm install -g chai

OK。接下來,先寫一個hello world 示例吧。
我們按上述步驟一步一步來.

//自己測試的代碼
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)在引用斷言庫chai
var expect = require("chai").expect;
//寫出測試
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)在可以打開控制臺,切換到你測試文件所在的目錄,比如,我的是在 demo/demo.js
在控制臺輸入命令

mocha demo.js

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

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

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

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

相關(guān)文章

  • 探知JS測試(1)

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

    xingpingz 評論0 收藏0
  • 探知js測試(3)

    摘要:模塊測試模塊語法我這里提及一點(diǎn)。基本工程目錄一個良好的工程目錄,能夠幫助你測試成本降到最低。這一塊算是獨(dú)立于單元測試的。 前面兩篇已經(jīng)把,js測試的模式,框架,斷言庫基本介紹了一遍。這里,我們要上升到整體測試架構(gòu)上來.首先,單元測試的對象是模塊,這里我們就要將自己測試目標(biāo)調(diào)整到對模塊測試上來。所以,這里我們需要使用CommonJS或者es6的模塊的寫法了。另外需要了解,mocha框架測...

    陳江龍 評論0 收藏0
  • 探知js測試(3)

    摘要:模塊測試模塊語法我這里提及一點(diǎn)。基本工程目錄一個良好的工程目錄,能夠幫助你測試成本降到最低。這一塊算是獨(dú)立于單元測試的。 前面兩篇已經(jīng)把,js測試的模式,框架,斷言庫基本介紹了一遍。這里,我們要上升到整體測試架構(gòu)上來.首先,單元測試的對象是模塊,這里我們就要將自己測試目標(biāo)調(diào)整到對模塊測試上來。所以,這里我們需要使用CommonJS或者es6的模塊的寫法了。另外需要了解,mocha框架測...

    pakolagij 評論0 收藏0
  • 探知JS測試(2)

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

    TZLLOG 評論0 收藏0
  • 探知JS測試(2)

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

    jonh_felix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<