jasmine.any引用構造函數或者類名作為期望值,和真是的構造函數匹配時返回true
jasmine的Mock Clock是一款有效的測試組件,有能力使用setTimeout或者setInterval回調函數。它使timer回調函數同步,使它們更容易測試
通過在spec或者suite里調用jasmine.Clock.useMock來安裝Mock clock。
通過jasmine.Clock.tick方法來標記clock以觸發注冊的回調函數,這個方法傳一個milliseconds.
上面這段話來自對官網的翻譯,一些地方不好理解,筆者對下圖程序做進一步解釋,setTimeout(function() { timerCallback(); }, 100);是一個回調函數,隔100milliseconds調用timerCallback()一次。jasmine.Clock.tick(101)為等待101milliseconds,所以第一次判斷timerCallback是否為調用時為未調用,第二次則已調用。而setInterval(function() { timerCallback(); }, 100)則是每隔100milliseconds調用timerCallback()一次,這樣解釋不難理解了,第一次判斷調用前等待101milliseconds,所以調用次數為1,第二次判斷調用前又等待50milliseconds,總等待時間為151milliseconds<200milliseconds,所以仍是調用一次,再等待50milliseconds后總等待時間>200milliseconds,所以第三次判斷調用次數為2
Jasmine支持測試異步操作,通過調用runs定義的一組blocks寫入specs,bolcks通常結束于異步調用。waitsFor block需要一個鎖方法,一個失敗消息,和一個超時時間。鎖方法一直輪詢直到返回true或者超時。如果超時,spec輸出失敗信息。一旦異步狀況出現,另一個runs block定義終的測試行為,它期望值通常基于異步調用返回的狀態。如下圖,起初flag為false,waitsFor一直輪詢,直到500 milliseconds后觸發setTimeout的function,將flag賦為true后waitsFor在超時時間未到之前結束,waitsFor下面那個runs是測試行為,筆者看了下value的值為30+。
Jasmine是構建在javaScript之上的,必須包含在一個JS的環境中,如一個web頁面,這樣才能運行。
jasmine的測試文件用javaScript編寫,通過Rocoo被編譯進html(Rocoo這里不做介紹,有興趣的可以自行里了解)。通過