Node創建自定義的斷言
通過擴展Node內置的斷言可以支持一些程序特定的表達式。有時候,發現一直在重複使用相同的代碼來編寫測試用例,但是你其實又希望有一種更好的方式。比如說,如果你想在assert.ok中通過使用正則表達式驗證合法的有限地址。為了解決這樣一個問題,你可以通過編寫自定義的斷言來實現。通過學習如何編寫自定義的斷言,也可以幫助你從內到外更好地理解斷言模塊。
assert模塊建立在一個單獨函數之上:fail,assert.ok實際上就是調用的fail方法,傳入一些取反的邏輯。它看上去就是這樣的代碼:if(!value)fail(value),如果你剖析一下fail函數是怎麼工作的,你就會發現它只不過是拋出一個assert.AssertionError的異常。
這個錯誤對象里包含一些相關的屬性,使得測試報告能夠分析出錯誤發生的位置和原因。編寫這模塊的人知道其他人想編寫他們自定義的斷言,所以,fail函數就暴露出來,這樣的話,這個函數就可以被複用了。
編寫一個自定義的斷言需要包括下面這些步驟:
1.定義一個與現有的斷言類庫里已有方法簽名相似的方法。
2.當與期望不匹配的時候調用fail函數。
3.讓測試產生一個AssertionError的異常。
在例子中,我們綜合了這些步驟定製了一個斷言來確保一個正則表達式能夠匹配
載入assert模塊。
確保測試可以通過。
確保測試失敗。
這個例子中載入了斷言模塊,然後定義了一個match方法,當傳入的實際值和正則表達式所要求的匹配不上的時候,該函數裡面通過運行assert.fail來產生期望的異常。這裡你必須牢記的關鍵細節就是:定義的參數列表必須和斷言模塊里的其他的方法保持一致——比如這個例子里定義的方法就是基於assert.equal的形式的。
上例子中也包含了一些測試,在實際的程序調用中,這個場景可能發生在一個單獨的文件中,這裡闡述了定製的斷言是如何工作的,首先需要檢查是否傳入一個簡單的測試通過用一個正則表達式來驗證字元串,並且保證當測試失敗的時候能夠通過assert.throw拋出AssertionError異常。
※用內置的模塊編寫測試
※模擬PayPal的IPN請求
※Node為中間件注入創建seams
※web應用程序的測試
※一個restify應用和Restify路由用法
TAG:行家匯 |
※jmeter斷言和集合點
※Spring Cloud Gateway的After路由斷言工廠
※常程斷言iPhone X最快被淘汰看好三星S8 網友問的最多還是ZUK
※改版張良很強?玩家發現這個bug後斷言:張良廢了!
※DG因「辱華風波」惹毛中國人,義大利媒體斷言:抵制不了多久
※看完本內特NBDL的數據對比一下周琦,便可以斷言周琦必能立足NBA
※什麼是單一斷言規則
※民進黨「立委」斷言:台北市長選戰民進黨篤定自提人選
※李光耀斷言:歐盟並非一個真正的聯盟,註定走向解體淪為配角
※高盛CEO:斷言比特幣已死太過武斷 是驢是馬仍需遛遛
※南懷瑾先生:我敢斷言,想要教育小孩有出息,必須從經典入手!
※英國曾斷言神經毒劑為俄制 如今默默刪了推文稱無法確定
※女副總統無視問題,並斷言委內瑞拉註定要成為經濟強國!
※林志玲自曝感情狀況是單身 網友:這是情斷言承旭了嗎
※低頻信號在地球震動20min,是否和火山、地震有關,科學家難斷言
※幣安創始人趙長鵬斷言:「交易即挖礦」模式遲早會死
※殺記者,斷言路,是天底下最LOW的事情
※「老娘不想等了」,林志玲情斷言承旭,關鍵原因曝光,4個沒有判言承旭出局
※44歲林志玲情斷言承旭,自曝還是單身,其中的原因讓人慚愧!
※專家斷言:「兩岸開戰美國一定介入」