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()})
});
因此,如果抛出错误,将执行后续测试。
我将 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()})
});
因此,如果抛出错误,将执行后续测试。