QUnit是前端單元測試的框架,與java的JUnit類似,首先安裝QUnit,有三種方式:前端
2.1 開始測試java
QUnit.test( name, expected, test )
:一個常規的測試用例。測試用例名、期待斷言數、測試內容(通常是一個function)。正則表達式
QUnit.asyncTest( name, expected, test )
:一個異步測試用例。默認的test都是同步的。內容中必須顯示地調用start(),測試纔會開始。npm
QUnit.module( name, lifecycle )
:定義一個名爲name的模塊。在可選參數lifecycle中,能夠定義模塊開始和結束的測試內容。具體見文檔。數組
QUnit.init( )
:啓動QUnit測試。若是測試在進行中,則會從新啓動。基本不用。瀏覽器
2.2 QUnit斷言方法session
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全相等(包括其子元素都相等,適用於基本類型,數組和對象)則經過。對於基本類型,至關於strictEqual,能夠經過{key : value}是否相等比較兩個對象是否相等。assert.notDeepEqual( actual, expected, message )
遞歸不相等斷言,actual和expected不全相等(包括其子元素都相等,適用於基本類型,數組和對象)則經過。對於基本類型,至關於notStrictEqual。async
assert.strictEqual( actual, expected, message )
全相等斷言,actual和expected全相等(===)則經過。assert.notStrictEqual( actual, expected, message )
不全相等斷言,actual和expected不全相等(===)則經過。
assert.propEqual(value, expected[, message])
比較真實和期待(expected )的對象的屬性和屬性值是否相同,相同斷言經過,注意這個方法能夠比較構造函數和原型不一樣的兩個對象assert.notPropEqual(value, expected[, message])
與propEqual相反。
assert.expect( amount )
本測試裏期待會執行amount個斷言,大於或少於這個數量,測試都將失敗。
assert.raises( block, expected, message
)異常斷言,block中拋出異常則經過,expected爲可選參數,是所期待拋出異常名的正則表達式。
2.3 把QUnit集成到現有工具
QUnit在執行的過程當中會調用一系列函數,告知外界運行情況,你們能夠覆蓋這些函數,達到集成的目的。
QUnit.begin()
當QUnit開始時會調用此函數。QUnit.done()
當QUnit結束後會調用此函數。
QUnit.moduleStart({ name })
每當一個模塊執行開始時會調用此函數。QUnit.moduleDone({ name, failed, passed, total })
每當一個模塊執行結束後會調用此函數。
QUnit.testStart({ name }):
測試執行開始時會調用此函數。QUnit.testDone({ name, failed, passed, total })
每當一個測試執行結束後會調用此函數。
QUnit.log({ result, actual, expected, message })
:斷言執行結束後會調用此函數。
在後面的實例中,我寫了一些覆蓋,打印了執行過程。相信有了這些回調函數的幫助,寫一個進度條出來也不是難事。
2.4 QUnit的過濾器
2.5 QUnit Test對象
QUnit的每一個test函數都會生成Test類相應的實例,每一個實例都5個生命週期,每一個Test實例的生命週期方法都會順序加入config.queue中順序執行,生命週期以下:
若是run中有異步的代碼,順序執行run、teardown和finish以後,異步代碼還沒執行,其測試的結果就沒法正確統計。 所以應調用Qunit.start()和Qunit. stop()函數,分別設置config.blocking true或者false來控制執行隊列暫停或執行,從而等待異步代碼執行,正確統計執行結果。
更多API參考官網文檔:https://qunitjs.com/