【问题标题】:Mocha shuts down whole test suite on beforeEach errorMocha 关闭了 beforeEach 错误的整个测试套件
【发布时间】:2021-04-25 16:19:48
【问题描述】:

我正在使用带有 Mocha 和 Selenium 的 TypeScript。我的问题是,如果在 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。 提前致谢!

【问题讨论】:

    标签: javascript node.js typescript testing mocha.js


    【解决方案1】:

    根据 github 上的this issue 它说:

    mocha 目前假设如果你在 before 钩子中有问题,那么后续的事情将会失败,尽管我们可以将该假设的范围限制为仅嵌套在同一个 describe() 中的那些测试用例

    同样是正常行为停止执行是抛出错误。

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

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

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

    【讨论】:

    • 谢谢!这篇文章实际上有所帮助,因为那里写的内容我查找了这些钩子如何准确工作的规范,可以在这里找到(但不是在文档中,或者至少由于某种原因不容易):github.com/mochajs/mocha/pull/1043
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2019-02-16
    • 2016-04-06
    • 2021-01-08
    相关资源
    最近更新 更多