在我使用的所有測試框架中,都有一個可選參數來指定您自己的自定義錯誤消息。如何將自定義錯誤消息傳遞給茉莉花匹配器?
這可能是非常有用的,我找不到用茉莉花開箱的方法。
我已經有3個其他開發者問我關於這個確切的功能,當談到茉莉花,我不知道該怎麼告訴他們。
是否可以在每個斷言中指定自己的自定義錯誤消息?
在我使用的所有測試框架中,都有一個可選參數來指定您自己的自定義錯誤消息。如何將自定義錯誤消息傳遞給茉莉花匹配器?
這可能是非常有用的,我找不到用茉莉花開箱的方法。
我已經有3個其他開發者問我關於這個確切的功能,當談到茉莉花,我不知道該怎麼告訴他們。
是否可以在每個斷言中指定自己的自定義錯誤消息?
如果你看看茉莉花的源代碼,你會發現無法從匹配器外部設置消息。例如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
This issue正在跟蹤使用.because()
機制實現自定義錯誤消息的興趣。
與此同時,avrelian創建了一個不錯的庫,它使用since()
機制 - jasmine-custom-message
實現自定義錯誤消息。
加入可選參數,所有的匹配(TOBE,toContain,和其他人),所以你可以使用:
expect(true).toBe(false, 'True should be false').
然後輸出它看起來就像這樣:
Message:
Expected true to be false, 'True should be false'.
鏈接(這在文檔中沒有描述): https://github.com/ronanamsterdam/DefinitelyTyped/commit/ff104ed7cc13a3eb2e89f46242c4dbdbbe66665e
您可以在全局範圍內定義一個自定義匹配器,覆蓋錯誤m essage在茉莉如下:
beforeEach(function() {
jasmine.addMatchers({
toReport: function() {
return {
compare: function (actual, expected, msg) {
var result = {pass: actual == expected};
result.message = msg;
return result;
}
}
}
});
});
如果你想添加更多的細節,以茉莉硬編碼的消息 - 所有的匹配都爲可選的參數 - 檢查@ Xotabu4答案更detials – Fabio 2017-05-15 03:40:46