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

資訊專欄INFORMATION COLUMN

探知JS測試(1)

xingpingz / 1780人閱讀

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

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

單元測試

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

單元測試的過程

想好測試用例

動手寫測試

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

測試模式

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

TDD

TDD全稱為Test-driven development即,測試驅(qū)動開發(fā). 這個(gè)可以算是自主測試,用來幫助你寫出好代碼的一個(gè)非常好的辦法。 也是上文說到的,當(dāng)自己看到自己的代碼覆蓋率越來越高的時(shí)候,心里應(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測試提供了幾個(gè)方法:

describe() {alias: behavior()}

it()

before()

after()

beforeEach()

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

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

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

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

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

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

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

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

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

接下來就看自己的喜好挑一種吧。
ok~
還記得BDD提供幾個(gè)API嗎? 沒錯(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的說法,上面說的這些函數(shù)都是hook. 將測試的狀態(tài)點(diǎn)暴露給你,讓你可以進(jìn)行相關(guān)的操作。 同樣,官方摸cha也舉例說明了他們的用途。 比如在數(shù)據(jù)庫打開的時(shí)候,就可以使用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)行的一切測試,都需要有一個(gè)環(huán)境支持,那么mocha就是你的環(huán)境。 它應(yīng)該算是前端測試super 流行的一個(gè)框架吧(當(dāng)然,還有jasmine,zuul等). 因?yàn)閮?nèi)容豐富,顯示界面友好,所以,用戶也是很多的。
下載mocha環(huán)境:

sude npm install -g mocha

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

sudo npm install -g chai

OK。接下來,先寫一個(gè)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://systransis.cn/yun/78646.html

相關(guān)文章

  • 探知JS測試(1)

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

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

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

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

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

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

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

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

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

    jonh_felix 評論0 收藏0

發(fā)表評論

0條評論

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