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

資訊專(zhuān)欄INFORMATION COLUMN

單元測(cè)試之?dāng)嘌?

Achilles / 695人閱讀

摘要:?jiǎn)卧獪y(cè)試之?dāng)嘌宰鳛榍岸碎_(kāi)發(fā),很少去自己寫(xiě)單元測(cè)試。對(duì)于單元測(cè)試的了解也很少,自學(xué)了一點(diǎn)關(guān)于單元測(cè)試斷言的知識(shí),有了一些自己的個(gè)人理解,記錄下來(lái),方便下次使用時(shí)查閱。是被測(cè)試值的類(lèi)型,也就是斷言的期望值。其中主要適用于行為驅(qū)動(dòng)測(cè)試。

單元測(cè)試之?dāng)嘌?/b>
作為前端開(kāi)發(fā),很少去自己寫(xiě)單元測(cè)試。對(duì)于單元測(cè)試的了解也很少,自學(xué)了一點(diǎn)關(guān)于單元測(cè)試斷言的知識(shí),有了一些自己的個(gè)人理解,記錄下來(lái),方便下次使用時(shí)查閱。
什么是斷言

當(dāng)你對(duì)類(lèi),模塊或者方法的可以接受的輸入和輸出有著很明確的定義和認(rèn)識(shí),當(dāng)程序的輸出結(jié)果和輸入不匹配時(shí),
你想讓程序有一個(gè)明確的返回。比如:我明確地知道1+1=2,我現(xiàn)在就想知道我輸入1+1會(huì)不會(huì)得到2。如果不是程序返回一個(gè)錯(cuò)誤。這時(shí)候我們通常會(huì)使用到斷言。

斷言就是專(zhuān)門(mén)用來(lái)驗(yàn)證輸出和期望是否一致的一個(gè)工具。在內(nèi)容的實(shí)現(xiàn)上,它是通過(guò)比較一個(gè)實(shí)際值actual和一個(gè)期望值expected來(lái)實(shí)現(xiàn)的。下面介紹一個(gè)使用較為廣泛的斷言庫(kù)chai.js

chai.js斷言庫(kù)

安裝和導(dǎo)入

npm i chai
import chai from "chai"
let expect = chai.expect;

使用

let foo = "bar";
expect(foo).to.equal("bar");

chai的使用是類(lèi)似于鏈?zhǔn)秸{(diào)用的形式。以expect(foo).to.be.a("string");為例,
通過(guò).我么你可以把這個(gè)鏈?zhǔn)椒譃閹讉€(gè)部分:

expect(foo)

to

be

a("string")

我們逐步來(lái)理解這幾個(gè)部分:
expect(foo):是你要斷言的對(duì)象,翻譯過(guò)來(lái)就是我希望某某某
to:虛詞,單純作為語(yǔ)言鏈提供以期提高斷言的可讀性,它本身并不具有斷言功能。
be:同to一樣,是語(yǔ)言鏈調(diào)用提高可讀性。
a(string)a(type)是一個(gè)斷言,用來(lái)判斷測(cè)試紙的類(lèi)型。type是被測(cè)試值的類(lèi)型,也就是斷言的期望值。

那么根據(jù)上面的分析,我們可以知道實(shí)現(xiàn)一個(gè)斷言需要這幾個(gè)部分:

要斷言的對(duì)象

不具備斷言功能的斷言詞

具備斷言功能的斷言詞

以及期望結(jié)果

要斷言的對(duì)象和期望結(jié)果都是需要根據(jù)實(shí)際輸入和輸出進(jìn)行設(shè)置的。因此我們主要是講解斷言詞。

不具備斷言功能的斷言詞

to

be

been

is

that

which

and

has

have

with

at

of

same

but

does

still

這些斷言詞其實(shí)沒(méi)有意義,你把它去掉也不受到影響。比如:

expect(foo).to.equal("bar");
expect(foo).equal("bar");

上面兩個(gè)斷言能夠?qū)崿F(xiàn)相同的功能。也就是說(shuō)這些詞語(yǔ)使不使用沒(méi)什么影響。
接下來(lái)說(shuō)一下具備斷言功能的斷言詞。

具備斷言功能的斷言詞

equal

equal是一個(gè)基本上萬(wàn)能的斷言詞,絕大多數(shù)的斷言都可以轉(zhuǎn)換成使用equal來(lái)實(shí)現(xiàn)。

比如判斷變量長(zhǎng)度是否為3,我們可以使用lengthOf,同樣可以使用equal實(shí)現(xiàn)

expect(foo).have.lengthOf(3);
expect(foo.length).equal(3);

比如判斷數(shù)據(jù)類(lèi)型:我們既可以使用a,同樣可以使用equal實(shí)現(xiàn)

expect(foo).to.be.a("string");
expect(typeof foo).to.equal("string");

.deep

deep主要是用來(lái)遞歸比較對(duì)象的鍵值對(duì),而不是比較對(duì)象本身。通常配合equalproperty進(jìn)行使用。
比如:

expect([1,2]).equal([1,2]) // 斷言不通過(guò)

上面的斷言無(wú)法通過(guò),因?yàn)橐妙?lèi)型的比較的是對(duì)象。接下來(lái)我們看使用deep

expect([1,2]).deep.equal([1,2]) // 斷言通過(guò)

也就是說(shuō)如果是數(shù)組,對(duì)象等引用類(lèi)型時(shí),要比較里面的值需要使用deep。

通過(guò)使用equaldeep我們基本上能夠?qū)崿F(xiàn)絕大多數(shù)的斷言。更多的關(guān)于斷言
可以參考官網(wǎng)

說(shuō)明

目前只是介紹了expect的使用,其實(shí)chai.js還有assertshould兩種斷言方式。
其中expect主要適用于行為驅(qū)動(dòng)測(cè)試(Behavior Driven Development.BDD)。其他兩種斷言方式,以后用到了再進(jìn)行介紹。

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

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

相關(guān)文章

  • 前端單元測(cè)試初探

    摘要:本文只討論單測(cè)的范疇,對(duì)集成測(cè)試有興趣的話,可以看下的集成測(cè)試代碼。前端單測(cè)現(xiàn)狀測(cè)試本質(zhì)上就是假定一個(gè)輸入,然后判斷得到預(yù)期的輸出。 原文發(fā)于我的博客:https://github.com/hwen/blogS... 要不要寫(xiě)單測(cè)? 關(guān)于這個(gè) cnode 上就有個(gè)很有意思的討論 做個(gè)調(diào)查,你的 Node 應(yīng)用有寫(xiě)單測(cè)嗎? 看完這個(gè)應(yīng)該會(huì)有結(jié)論?如果沒(méi)有,就回帖跟別人探討下~ 測(cè)試 測(cè)試...

    isLishude 評(píng)論0 收藏0
  • Angular單元測(cè)試系列-如何使用Jasmine進(jìn)行Angular單元測(cè)試

    摘要:四結(jié)論本章幾乎所有的內(nèi)容在單元測(cè)試經(jīng)常使用到的東西特別是異步部分,三種不同異步方式并非共存的,而是需要根據(jù)具體業(yè)務(wù)而采用。否則,你會(huì)發(fā)現(xiàn)真難寫(xiě)單元測(cè)試。自此,我們算是為寫(xiě)單元測(cè)試打下了基礎(chǔ)。 以下是我假定那些極少或壓根沒(méi)寫(xiě)單元測(cè)試的人準(zhǔn)備的,因此,會(huì)白話解釋諸多概念性問(wèn)題,同時(shí)會(huì)結(jié)合 Jasmine 與之對(duì)應(yīng)的方法進(jìn)行講解。 一、概念 Test Suite 測(cè)試套件,哪怕一個(gè)簡(jiǎn)單的類(lèi),...

    zeyu 評(píng)論0 收藏0
  • React 單元測(cè)試策略及落地

    摘要:寫(xiě)好的單元測(cè)試,對(duì)開(kāi)發(fā)速度項(xiàng)目維護(hù)有莫大的幫助。我認(rèn)為單元測(cè)試的上下文存在于敏捷中。接下來(lái)一小節(jié),就可以正式進(jìn)入如何做的環(huán)節(jié)了如何寫(xiě)好單元測(cè)試。前面說(shuō)到,我們對(duì)單元測(cè)試寄予 寫(xiě)好的單元測(cè)試,對(duì)開(kāi)發(fā)速度、項(xiàng)目維護(hù)有莫大的幫助。前端的測(cè)試工具一直推陳出新,而測(cè)試的核心、原則卻少有變化。與產(chǎn)品代碼一并交付可靠的測(cè)試代碼,是每個(gè)專(zhuān)業(yè)開(kāi)發(fā)者應(yīng)該不斷靠近的一個(gè)理想之地。本文就圍繞測(cè)試講講,為什么我...

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

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

0條評(píng)論

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