摩卡"每个钩子之前"红色消息。我怎么知道具体出了什么问题?



我在测试失败之前收到以下消息:

1) "before each" hook 

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

  • 超时失败
  • 失败的断言
  • 引发错误

我怎么知道错误是什么?

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

我在 beforeEach 中遇到了这个问题,我不小心调用了 done() 两次(我在 beforeEach 结束时调用了它一次,但也通过 beforeEach 中调用的异步函数再次调用它)。

当我在监视模式下运行测试时,我收到您描述的错误消息,没有任何附加信息;当我正常运行测试时,我没有收到任何错误。我在相关票证上报告了这个。

我怎么知道错误是什么?

像调试任何普通代码一样调试它。如果在beforeEach回调中进行断言,则滥用框架。断言属于it回调,因此请重构它。

也可能不仅仅是忘记打电话给done因为当这种情况发生时,摩卡会有一个明确的错误消息。

因此,您的代码可能会引发未捕获的异常,您可以使用自己喜欢的调试风格来跟踪它。我喜欢用--debug-brk运行摩卡并使用节点检查器进行调试,但一些console.log语句也应该足够了。请注意,仅将相关的测试文件传递给 mocha 并使用describe.onlyit.only技术可以使测试套件保持小而集中,同时跟踪根本原因。

这是由于超过时间限制而发生的。在摩卡中,2000 毫秒是为异步进程分配的最长时间。因此,为了使您的代码成功,您需要增加时间限制它通常通过使用代码来完成:

this.timeout(4000)
注意:您不能使用

箭头功能,因为您不能使用

箭头功能中的选项。

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

请勿使用:

.end(done())

用:

.end(done)

最新更新