Node.js 防止在每个场景之间重置世界

Node.js 防止在每个场景之间重置世界,node.js,typescript,cucumberjs,Node.js,Typescript,Cucumberjs,我正在使用Cucumber js和Typescript 我想为我的测试创建并初始化一个驱动程序。我希望这个驱动程序在一个异步范围内初始化,这样在它被设置之前就不会有测试开始(这可能需要10秒),一旦它被初始化,我就不必在每个场景中都再次进行测试。 我尝试将驱动程序存储在自定义世界类中,并在BeforeAll函数中仅初始化一次,但我无法在此函数中访问此: class Context implements World { public driver: Driver public const

我正在使用Cucumber js和Typescript

我想为我的测试创建并初始化一个驱动程序。我希望这个驱动程序在一个异步范围内初始化,这样在它被设置之前就不会有测试开始(这可能需要10秒),一旦它被初始化,我就不必在每个场景中都再次进行测试。 我尝试将驱动程序存储在自定义世界类中,并在BeforeAll函数中仅初始化一次,但我无法在此函数中访问

class Context implements World {
  public driver: Driver

  public constructor() {
    this.driver = new Driver()
  }

  public async init_driver() {
    await this.driver.init()
  }
}


即使这样做有效,在每个场景之前都会重置世界,那么我如何在我的步骤中使用
this.driver
,而不必在每个场景之前设置驱动程序呢?

本页的第一条语句“”说,这将在钩子和世界文件本身中进行访问,其范围仅限于这两个文件

重用启动的驱动程序对象:

1) 使用名为“driver”的静态变量创建一个单独的类(例如:重用)。 2) 创建一个名为hooks的类,并在此处导入创建的类 3) 在hooks文件中使用Before()函数,我们可以这样处理它:

if(typeof ReUse.driver===“未定义”){ --浏览器启动代码并将该对象分配给同一个ReUse.driver变量。 }

这样,当第一个场景开始时,ReUse.driver将保持未定义状态并进入if块。在那里,我们启动驱动程序对象并将其分配给ReUse.driver变量。 当第二个场景开始时,此ReUse.driver将保留driver对象,并且该条件将不满足。因此,不会再启动驱动程序

BeforeAll( async function() {
  setWorldConstructor(Context)

  await this.init_driver() // error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation
})