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