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

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?