Mocha'在每个钩子之前'红色的消息。我怎么知道具体是什么问题?

时间:2015-03-09 11:46:52

标签: javascript node.js testing mocha

在测试失败之前,我有以下消息:

1) "before each" hook 

这就是整个消息。它是红色的,这让我觉得每个钩子之前有问题,但我不确定错误是什么。它可能是:

  • 超时失败
  • 断言失败
  • 抛出错误

我如何知道错误是什么?

这个特殊的beforeEach()通常执行得很好。

4 个答案:

答案 0 :(得分:4)

我在beforeEach中遇到了这个问题我意外地调用了done()两次(我在beforeEach的末尾调用了一次,但也通过在beforeEach中调用的异步函数再次调用它)。

当我在监视模式下运行测试时,我收到了您描述的错误消息,没有任何其他信息;当我正常运行测试时,我没有收到任何错误。我在a related ticket报告此内容。

答案 1 :(得分:3)

  

我如何知道错误是什么?

调试它就像你使用普通代码一样。如果您在beforeEach回调中进行断言,则表示您正在滥用该框架。断言属于it回调,因此重构。

这也可能不仅仅是忘记调用done,因为当发生这种情况时,mocha会有明确的错误消息。

因此,您的代码可能会抛出未捕获的异常,您可以使用自己喜欢的调试方式来跟踪它。我喜欢使用--debug-brkdebugging with node-inspector运行mocha,但是一些console.log语句也应该足够了。请注意,只将相关测试文件传递给mocha并使用describe.onlyit.only技术,可以在追踪根本原因的同时保持测试套件的小巧集中。

答案 2 :(得分:0)

发生这种情况是因为时间限制超过了。在mocha中,为异步进程分配的最大时间为2000ms。因此,要使您的代码成功,您要增加时间限制 通常通过使用以下代码来完成:

this.timeout(4000)

注意:您不能使用箭头功能,因为您不能使用

  

这个

箭头功能中的选项。

答案 3 :(得分:0)

对于每个测试,当您想要附加结束通话时,

不要使用:

SecKeyVerifySignature

使用:

.end(done())