Mocha 'before each hook' 红色消息。我怎么知道具体哪里出了问题?
Mocha 'before each hook' message in red. How do I know what specifically is wrong?
我收到以下消息,就在测试失败之前:
1) "before each" hook
这就是整个消息。它是红色的,这让我觉得每个钩子之前都有问题,但我不确定错误是什么。可能是:
- 超时失败
- 一个失败的断言
- 抛出错误
我怎么知道错误是什么?
这个特殊的 beforeEach()
通常执行得很好。
How do I know what the error is?
像调试任何普通代码一样调试它。如果您在 beforeEach
回调中进行断言,那么您就是在滥用框架。断言属于 it
回调,因此重构它。
它也可能不仅仅是忘记调用 done
因为当发生这种情况时 mocha 有一个明确的错误消息。
因此您的代码可能抛出了未捕获的异常,您可以使用自己喜欢的调试方式来追踪它。我喜欢 运行 mocha 与 --debug-brk
和 debugging with node-inspector,但一些 console.log
语句也应该足够了。请注意,仅将相关的测试文件传递给 mocha 并使用 describe.only
或 it.only
技术可以在您追踪根本原因时保持测试套件的小型化和集中化。
我 运行 在 beforeEach 中不小心调用了 done() 两次时遇到了这个问题(我在 beforeEach 的末尾调用了一次,但也通过在 beforeEach 中调用的异步函数再次调用了它).
当我 运行 在手表模式下进行测试时,我收到了您描述的错误消息,但没有任何其他信息;当我 运行 正常进行测试时,我没有收到任何错误。我在 a related ticket.
上报告了这个
这是由于超过时间限制而发生的。在 mocha 中,2000 毫秒是分配给异步进程的最长时间。所以为了让你的代码成功,你要增加时间限制
通常使用代码完成:
this.timeout(4000)
注意:不能使用箭头函数,因为不能使用
this
箭头函数中的选项。
对于您的每个测试,当您想要附加结束调用时,
不要使用:
.end(done())
使用:
.end(done)
我收到以下消息,就在测试失败之前:
1) "before each" hook
这就是整个消息。它是红色的,这让我觉得每个钩子之前都有问题,但我不确定错误是什么。可能是:
- 超时失败
- 一个失败的断言
- 抛出错误
我怎么知道错误是什么?
这个特殊的 beforeEach()
通常执行得很好。
How do I know what the error is?
像调试任何普通代码一样调试它。如果您在 beforeEach
回调中进行断言,那么您就是在滥用框架。断言属于 it
回调,因此重构它。
它也可能不仅仅是忘记调用 done
因为当发生这种情况时 mocha 有一个明确的错误消息。
因此您的代码可能抛出了未捕获的异常,您可以使用自己喜欢的调试方式来追踪它。我喜欢 运行 mocha 与 --debug-brk
和 debugging with node-inspector,但一些 console.log
语句也应该足够了。请注意,仅将相关的测试文件传递给 mocha 并使用 describe.only
或 it.only
技术可以在您追踪根本原因时保持测试套件的小型化和集中化。
我 运行 在 beforeEach 中不小心调用了 done() 两次时遇到了这个问题(我在 beforeEach 的末尾调用了一次,但也通过在 beforeEach 中调用的异步函数再次调用了它).
当我 运行 在手表模式下进行测试时,我收到了您描述的错误消息,但没有任何其他信息;当我 运行 正常进行测试时,我没有收到任何错误。我在 a related ticket.
上报告了这个这是由于超过时间限制而发生的。在 mocha 中,2000 毫秒是分配给异步进程的最长时间。所以为了让你的代码成功,你要增加时间限制 通常使用代码完成:
this.timeout(4000)
注意:不能使用箭头函数,因为不能使用
this
箭头函数中的选项。
对于您的每个测试,当您想要附加结束调用时,
不要使用:
.end(done())
使用:
.end(done)