0
我正在使用Jasmine 2.5.3,並且正在編寫一個首先處理輸入的customMatcher;創建一個數組,然後根據期望值檢查該數組。在jasmine自定義匹配器中使用來自現有的toEQual的消息
我已經能夠編寫匹配器並使其工作。然而,當我嘗試使用toEqual
來比較Jasmine中的兩個數組時,我非常喜歡這個輸出,並且我想返回與輸出的message
屬性相同的消息。這怎麼可能?我已閱讀文檔,但沒有看到有關重複使用錯誤消息的任何信息。當我讀到源代碼時,我看到了對diffBuilder.getMessage()
的引用,但我沒有看到任何有關使用它的註釋。
爲了詳細說明,這裏是我匹配的僞代碼:
return {
compare: function(input, expected) {
var actual = foo(input); //actual is an array
return {
pass: actual === expected,
message: //same as failure of: expect([1]).toEqual([3])
};
}
}
其他注意事項/澄清:
- 我不能把
foo
一個模塊中,因爲它僅僅是爲了測試一個幫手模塊,我想盡可能保留在自定義匹配器中 - 我看到了另一篇文章,它將從茉莉花環境訪問
toEqual
,如下所示:jasmine.matchers.toEqual
,但我無法獲得有關收到錯誤消息
你怎麼能這樣做呢?比較函數必須返回一個具有兩個屬性的對象:pass和message。如果你這樣做,你在這裏顯示的內容,你會得到一個錯誤「TypeError:不能讀取未定義的屬性'傳遞',因爲toEqual匹配器返回udefined。這是在茉莉花2.8.0 – user907860