2012-07-17 86 views
4

我使用摩卡和柴作爲斷言。柴,摩卡:確定應該斷言

我在幾個規格斷言

Exp1.should.be.true Exp2.should.be.true Exp3.should.be.true

如果其中一個出現故障摩卡寫入「預計錯誤是真實的「,它有一種方法來識別它們?

有了希望我能做到這一點: 期待(EXP1, 'EXP1')to.be真

是水木清華像這可能與應該?

回答

5

顯然should此刻不支持自定義錯誤消息。

您可以創建自己的助手來設置消息:

var chai = require('chai'), 
    should = chai.should(); 

// Helper definition - should be in a shared file 
chai.use(function(_chai, utils) { 
    _chai.Assertion.addMethod('withMessage', function(msg) { 
    utils.flag(this, 'message', msg); 
    }); 
}); 

// Sample usage 
it('should fail', function() { 
    var Exp1 = false; 
    var Exp2 = false; 
    Exp1.should.be.withMessage('Exp1').true; 
    Exp1.should.withMessage('Exp2').be.true; 
}); 
0

我不知道爲什麼他們沒有簡單地增加其發射線的斷言,但我遇到了這個確切的同樣的問題我自己。一位能夠比我注意到的手冊更好的同事有一個includeStack的設置,它將給出斷言的行號。 http://chaijs.com/guide/styles/#configure

因爲我做了很多異步的,我可能會遇到我的測試中beforebeforeEach,然後運行每個斷言獨立it

2

我檢查了chai code with respect to should,發現目前接受的答案不正確或不完整。

如果您在那裏閱讀,您會發現確實有辦法在每個斷言中包含您自己的自定義消息。問題在於,您可能需要更改斷言語法來代替使用should的函數調用。

(1).should.equal(0, 'This should fail'); 
/****** Output with (I believe) default reporter ***** 
* This should fail 
* + expected - actual 
* 
* -1 
* +0 
*/ 

請注意,如果您使用自己的記者,您的輸出可能會有所不同。如果你覺得這樣傾向,你可能會包裝should的函數,以便在斷言輸出中總是包含行號。