2012-07-17 71 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的函数,以便在断言输出中总是包含行号。