2016-10-12 43 views
1

我使用摩卡與柴進行測試。摩卡顯示了整個測試的代碼,當您展開測試用例在瀏覽器中單擊鼠標左鍵,但是當任何柴氏斷言失敗,我得到的是這樣的:如何使柴打印斷言的參數名稱,而不是它的值

預期不確定的存在

這種情況是相當困難以查明文本描述是否最初不是用於斷言,因爲它是第二個參數。 有沒有辦法讓類似

預計foo.bar存在

附:我使用webpack,所以assertion的行號意味着什麼(可以通過webpack生成的文件查找,但很難)。

回答

1

Chai沒有功能,您可以打開以獲取您希望的報告類型。在很多情況下,我發現Chai製作的股票消息不夠準確,無法快速找到問題所在,所以我設置了自定義消息。例如:

it("should test promise throwing error",() => { 
    const foo; 
    expect(foo, "foo should exist").to.exist; 
}); 

如果expect(...).to.exist"... should exist"冗餘惹惱你,你可以縮短消息爲一個字符串,是您需要足夠的描述:expect(foo, "foo").to.exist。它並沒有完全消除手動工作,但它減少了它。

對於自動解決方案,您必須編寫一個expect的包裝器,該包裝器能夠提取傳遞給它的參數的名稱。這不是一項簡單的任務。

+0

謝謝你的回答。據我所知,答案是:現在有辦法使用Chai開箱即可。自從Mocha爲每個測試用例打印它的正文以來,有點奇怪。 – Slav

+1

你理解正確。打印一個函數的源代碼已經嵌入到JavaScript標準中:如果'fn'是一個函數,你可以用'fn.toString()'來獲取源代碼(這正是Mocha所做的:'this.body =(fn ||'').toString();')。找到調用函數時使用的JavaScript表達式是完全不同的一堆魚。你可以使用類似['esprima'](http://esprima.org/)的東西,但esprima可以提供很多幫助,但esprima爲了查找信息而產生的AST還有很多工作要做'想要。 – Louis

相關問題