Mocha 在 beforeEach 错误时关闭整个测试套件

Mocha shuts down whole test suite on beforeEach error

我将 TypeScript 与 Mocha 和 Selenium 结合使用。我的问题是,如果在 beforeEach 中抛出一个错误,整个测试套件就会关闭。我将尝试对其进行说明,这就是 运行 在成功测试中的表现:

TestSuite A
     beforeEach hook for Test A
     Test A
     beforeEach hook for Test B
     Test B
     ...

如果“测试 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 currently assumes that if you have an issue in before hooks then subsequent things will fail, though we could limit the scope of that assumption to only those test-cases nested within the same describe()

也是一个正常的行为停止执行是一个错误被抛出。

您可以使用 try/catch 块来处理异常,即使错误是必须的,您也可以使用 assert.throw 来检查错误是否存在并已被抛出。

beforeEach('some description', function() {
  assert.throw(() => {your_function()})
});

因此,如果抛出错误,将执行后续测试。