2013-03-04 48 views
23

在我使用的所有測試框架中,都有一個可選參數來指定您自己的自定義錯誤消息。如何將自定義錯誤消息傳遞給茉莉花匹配器?

這可能是非常有用的,我找不到用茉莉花開箱的方法。

我已經有3個其他開發者問我關於這個確切的功能,當談到茉莉花,我不知道該怎麼告訴他們。

是否可以在每個斷言中指定自己的自定義錯誤消息?

回答

9

如果你看看茉莉花的源代碼,你會發現無法從匹配器外部設置消息。例如toBeNaN匹配器。

/** 
* Matcher that compares the actual to NaN. 
*/ 
jasmine.Matchers.prototype.toBeNaN = function() { 
    this.message = function() { 
     return [ "Expected " + jasmine.pp(this.actual) + " to be NaN." ]; 
    }; 

    return (this.actual !== this.actual); 
}; 

正如你所看到的消息是硬編碼到匹配器,當你調用匹配將被設置。我可以想出自己的消息的唯一方法是像描述的​​那樣編寫匹配器here

+0

如果你想添加更多的細節,以茉莉硬編碼的消息 - 所有的匹配都爲可選的參數 - 檢查@ Xotabu4答案更detials – Fabio 2017-05-15 03:40:46

0

您可以在全局範圍內定義一個自定義匹配器,覆蓋錯誤m essage在茉莉如下:

beforeEach(function() { 
    jasmine.addMatchers({ 
     toReport: function() { 
      return { 
       compare: function (actual, expected, msg) { 
        var result = {pass: actual == expected}; 
        result.message = msg; 
        return result; 
       } 
      } 
     } 
    }); 
});