2017-02-27 34 views
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,但我無法獲得有關收到錯誤消息

回答

0

原來我可以做的任何信息:

return { 
    compare: function(input, expected) { 
     var actual = foo(input); 
     return (expect(actual).toEqual(expected)) 
    } 
} 
+0

你怎麼能這樣做呢?比較函數必須返回一個具有兩個屬性的對象:pass和message。如果你這樣做,你在這裏顯示的內容,你會得到一個錯誤「TypeError:不能讀取未定義的屬性'傳遞',因爲toEqual匹配器返回udefined。這是在茉莉花2.8.0 – user907860

相關問題