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

資訊專欄INFORMATION COLUMN

前端測試(2)--QUnit

RebeccaZhong / 1707人閱讀

摘要:全局檢查,如果勾選了這項(xiàng),在進(jìn)行測試之前,會(huì)檢查測試之前和測試之后對(duì)象中的屬性,如果前后不一樣,就會(huì)顯示不通過。

1、簡介

QUnit是前端單元測試的框架,與java的JUnit相似,首先安裝QUnit,有三種方式:

官網(wǎng)下載源文件

引用CDN

使用 bower 安裝( bower install --save-dev qunit ) 或 使用npm安裝( npm install --save-dev qunitjs )

2、常用代碼簡介

2.1 開始測試

QUnit.test( name, expected, test ) :一個(gè)常規(guī)的測試用例。測試用例名、期待斷言數(shù)、測試內(nèi)容(一般是一個(gè)function)。

QUnit.asyncTest( name, expected, test ) :一個(gè)異步測試用例。默認(rèn)的test都是同步的。內(nèi)容中必須顯示地調(diào)用start(),測試才會(huì)開始。

QUnit.module( name, lifecycle ) :定義一個(gè)名為name的模塊。在可選參數(shù)lifecycle中,可以定義模塊開始和結(jié)束的測試內(nèi)容。具體見文檔。

QUnit.init( ) :啟動(dòng)QUnit測試。如果測試在進(jìn)行中,則會(huì)重新啟動(dòng)。基本不用

2.2 QUnit斷言方法

assert.ok( state, message ) :真假斷言,state為true則通過。類似于JUnit的assertTrue。

assert.equal( actual, expected, message ) :相等斷言,actual和expected相等(==)則通過。類似于JUnit的assertEquals。
assert.notEqual( actual, expected, message )不等斷言,actual和expected不相等(!=)則通過。類似于JUnit的assertNotEquals。

assert.deepEqual( actual, expected, message )遞歸相等斷言,actual和expected全相等(包括其子元素都相等,適用于基本類型,數(shù)組和對(duì)象)則通過。對(duì)于基本類型,相當(dāng)于strictEqual,可以通過{key : value}是否相等比較兩個(gè)對(duì)象是否相等。
assert.notDeepEqual( actual, expected, message )遞歸不相等斷言,actual和expected不全相等(包括其子元素都相等,適用于基本類型,數(shù)組和對(duì)象)則通過。對(duì)于基本類型,相當(dāng)于notStrictEqual。

assert.strictEqual( actual, expected, message )全相等斷言,actual和expected全相等(===)則通過。
assert.notStrictEqual( actual, expected, message )不全相等斷言,actual和expected不全相等(===)則通過。

assert.propEqual(value, expected[, message]) 比較真實(shí)和期待(expected )的對(duì)象的屬性和屬性值是否相同,相同斷言通過,注意這個(gè)方法可以比較構(gòu)造函數(shù)和原型不同的兩個(gè)對(duì)象
assert.notPropEqual(value, expected[, message]) 與propEqual相反。

assert.expect( amount )本測試?yán)锲诖龝?huì)執(zhí)行amount個(gè)斷言,大于或少于這個(gè)數(shù)量,測試都將失敗。

assert.raises( block, expected, message )異常斷言,block中拋出異常則通過,expected為可選參數(shù),是所期待拋出異常名的正則表達(dá)式。

2.3 把QUnit集成到現(xiàn)有工具

QUnit在執(zhí)行的過程中會(huì)調(diào)用一系列函數(shù),告知外界運(yùn)行狀況,大家可以覆蓋這些函數(shù),達(dá)到集成的目的。

QUnit.begin()當(dāng)QUnit開始時(shí)會(huì)調(diào)用此函數(shù)。
QUnit.done()當(dāng)QUnit結(jié)束后會(huì)調(diào)用此函數(shù)。

QUnit.moduleStart({ name })每當(dāng)一個(gè)模塊執(zhí)行開始時(shí)會(huì)調(diào)用此函數(shù)。
QUnit.moduleDone({ name, failed, passed, total })每當(dāng)一個(gè)模塊執(zhí)行結(jié)束后會(huì)調(diào)用此函數(shù)。

QUnit.testStart({ name }):測試執(zhí)行開始時(shí)會(huì)調(diào)用此函數(shù)。
QUnit.testDone({ name, failed, passed, total })每當(dāng)一個(gè)測試執(zhí)行結(jié)束后會(huì)調(diào)用此函數(shù)。

QUnit.log({ result, actual, expected, message }):斷言執(zhí)行結(jié)束后會(huì)調(diào)用此函數(shù)。

在后面的實(shí)例中,我寫了一些覆蓋,打印了執(zhí)行過程。相信有了這些回調(diào)函數(shù)的幫助,寫一個(gè)進(jìn)度條出來也不是難事。

2.4 QUnit的過濾器

Hide passed tests:隱藏通過的測試,勾選后通過的測試就不顯示。使用了HTML5的sessionStorage技術(shù),頁面重新載入的時(shí)候只測試之前那部分沒有通過的case。

Check for Globals:”全局檢查“,如果勾選了這項(xiàng),在進(jìn)行測試之前,QUnit會(huì)檢查測試之前和測試之后window對(duì)象中的屬性,如果前后不一樣,就會(huì)顯示不通過。

No try-catch: QUnit不使用try-catch跑測試,當(dāng)有異常拋出的時(shí)候,測試運(yùn)行器會(huì)停止運(yùn)行,但會(huì)獲得一個(gè)內(nèi)部異常,在我們使用老瀏覽器(例如ie6)做測試的時(shí)候會(huì)有幫助。

Rerun:重新測試該用例

Enable coverage:查看測試代碼的覆蓋率,需要引入文件sap.ui.qunit.qunit-coverage

2.5 QUnit Test對(duì)象

QUnit的每個(gè)test函數(shù)都會(huì)生成Test類相應(yīng)的實(shí)例,每個(gè)實(shí)例都5個(gè)生命周期,每個(gè)Test實(shí)例的生命周期方法都會(huì)順序加入config.queue中順序執(zhí)行,生命周期如下:

init

setup

run函數(shù)負(fù)責(zé)運(yùn)行正真的測試代碼

teardown

finish負(fù)責(zé)將統(tǒng)計(jì)好的測試結(jié)果顯示到頁面上

如果run中有異步的代碼,順序執(zhí)行run、teardown和finish之后,異步代碼還沒執(zhí)行,其測試的結(jié)果就無法正確統(tǒng)計(jì)。 因此應(yīng)調(diào)用Qunit.start()和Qunit. stop()函數(shù),分別設(shè)置config.blocking true或者false來控制執(zhí)行隊(duì)列暫?;驁?zhí)行,從而等待異步代碼執(zhí)行,正確統(tǒng)計(jì)執(zhí)行結(jié)果。

更多API參考官網(wǎng)文檔:https://qunitjs.com/

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

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

相關(guān)文章

  • 關(guān)于前端開發(fā)談?wù)剢卧?em>測試

    摘要:很快我發(fā)現(xiàn)有一個(gè)誤區(qū),許多人認(rèn)為單元測試必須是一個(gè)集中運(yùn)行所有單元的測試,并一目了然。許多人認(rèn)為單元測試,甚至整個(gè)測試都是在編碼結(jié)束后的一道工序,而修復(fù)也不過是在做垃圾掩埋一類的工作。 單元測試Unit Test 很早就知道單元測試這樣一個(gè)概念,但直到幾個(gè)月前,我真正開始接觸和使用它。究竟什么是單元測試?我想也許很多使用了很久的人也不一定能描述的十分清楚,所以寫了這篇文章來嘗試描述它...

    0x584a 評(píng)論0 收藏0
  • 譯:你該使用什么單元測試,Qunit、Jasmine還是Mocha?

    摘要:不論你是在寫瀏覽器端還是后端的,總存在那么一個(gè)問題我該使用什么單元測試庫去確保我的代碼如預(yù)期的運(yùn)行呢總是有那么一些流行的框架可供選擇。在中仍然流行,并且擁有來自許多地方性的支持。如果你的測試使用它,直到調(diào)用了才能通過。 不論你是在寫瀏覽器端javascript還是后端的nodejs,總存在那么一個(gè)問題:我該使用什么單元測試庫去確保我的代碼如預(yù)期的運(yùn)行呢?總是有那么一些流行的框架可供選擇...

    Forelax 評(píng)論0 收藏0
  • 前端學(xué)習(xí)路線

    摘要:具體來說,包管理器就是可以通過命令行,幫助你把外部庫和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫?,F(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫語義HTML 理解如何把網(wǎng)頁分...

    FullStackDeveloper 評(píng)論0 收藏0
  • 前端學(xué)習(xí)路線

    摘要:具體來說,包管理器就是可以通過命令行,幫助你把外部庫和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫?,F(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫語義HTML 理解如何把網(wǎng)頁分...

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

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

0條評(píng)論

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