我目前正在学习AngularJS,其中一部分涉及创建测试。目前,我正试图找出如何为失败的测试创建更有用的错误消息。例如,如果我在java领域编写JUnit测试,我会做类似这样的事情:
assertTrue( "The foo value should be true at this point", bar.isFoo() );
这样,如果检查失败,我将在日志中获得第一个参数。
对于mocha中的布尔检查(使用chai和sinon,以防产生差异),我有…
expect(broadcastSpy.calledWith('order.add')).to.be.true;
如果失败,那么我得到以下内容:
expected false to be true
AssertionError: expected false to be true
在测试我的应用程序时,是否有一种方法可以复制有用的失败信息? 我在回答另一个问题时提到了这一点。我刚刚检查了Chai的代码,以确保自我写那个答案以来没有任何变化,并发现以下内容仍然正确。代码:
expect(foo).to.be.true;
不接受自定义消息,因为true
是一个通过getter获取其值的属性。但是,您可以这样做:
expect(foo).to.equal(true, "foo should be true");
在断言失败时获取自定义消息。
Chai的assert接口支持所有断言的消息,例如:
assert.isTrue(foo, "foo should be true");
我碰巧发现了一个可能更令人满意的答案:expect
可以将消息作为第二个参数,如下所示:
expect(foo, 'foo should be true').to.be.true;
这会显示以下输出(如果foo
是false
):
AssertionError: foo should be true: expected false to be true
来源:参见Chai文档-搜索文本"该消息也可以作为expect
的第二个参数。"