如何解决Mocha 在 beforeEach 错误时关闭整个测试套件
我将 TypeScript 与 Mocha 和 Selenium 一起使用。我的问题是,如果在 beforeEach 中抛出错误,整个测试套件就会关闭。我将尝试说明它,这是它在成功测试中的运行方式:
TestSuite A
beforeEach hook for Test A
Test A
beforeEach hook for Test B
Test B
...
如果在“beforeEach hook for Test A”中发生错误,它当前的运行方式:
TestSuite A
beforeEach hook for Test A -> Error gets thrown
TestSuite A gets exited
这对我来说是个问题,因为我在 beforeEach 钩子中使用了 Selenium 等待。我正在等待将网页上的文本更改为“已连接”。这表明我的客户已经建立了一个成功的连接,这正是我想要的。我基本上是在我的 beforeEach 钩子中设置我的环境。
这就是我希望它运行的方式,这对我来说似乎是最自然的,但由于某种原因,Mocha 不能以这种方式工作(而基本上所有其他框架都以这种方式工作,例如 RSpec、JUnit、XUnit 等.)
TestSuite A
beforeEach hook for Test A -> Error gets thrown
beforeEach hook for Test B
Test B
...
我使用的是 Node 版本 v14.15.4 和 Mocha 8.2.1。 提前致谢!
解决方法
根据 github 上的 this 问题,它说:
mocha 目前假设如果你在 before hooks 中遇到问题,那么后续的事情就会失败,尽管我们可以将该假设的范围限制为仅嵌套在同一个 describe() 中的那些测试用例
停止执行也是正常的行为,是抛出了错误。
您可以使用 try/catch
块来处理异常,或者即使错误是必须的,您也可以使用 assert.throw
来检查错误是否存在并已被抛出。
beforeEach('some description',function() {
assert.throw(() => {your_function()})
});
因此,如果抛出错误,将执行后续测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。