Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 毕竟挂钩错误-';这';在使用cucumber js和selenium时,不是指我的世界构造函数_Javascript_Node.js_Selenium Webdriver_Bdd_Cucumberjs - Fatal编程技术网

Javascript 毕竟挂钩错误-';这';在使用cucumber js和selenium时,不是指我的世界构造函数

Javascript 毕竟挂钩错误-';这';在使用cucumber js和selenium时,不是指我的世界构造函数,javascript,node.js,selenium-webdriver,bdd,cucumberjs,Javascript,Node.js,Selenium Webdriver,Bdd,Cucumberjs,在测试结束时(使用cucumber js和selenium)试图关闭浏览器时,我遇到了“AfterAll hook errored”这并不像在我的step.js文件中那样是指世界 这是我的hooks.js文件: const { AfterAll, Before } = require("cucumber"); AfterAll(async function() { await this.browser.close(); }); 这是我的world.js文件: const driver =

在测试结束时(使用cucumber js和selenium)试图关闭浏览器时,我遇到了“AfterAll hook errored”这并不像在我的step.js文件中那样是指世界

这是我的hooks.js文件:

const { AfterAll, Before } = require("cucumber");

AfterAll(async function() {
  await this.browser.close();
});
这是我的world.js文件:

const driver = require("selenium-webdriver");
require("chromedriver");
const browser = new driver.Builder().forBrowser("chrome").build();
const { setWorldConstructor, setDefaultTimeout } = require("cucumber");

class CustomWorld {
  constructor() {
    this.driver = driver;
    this.browser = browser;
    this.setDefaultTimeout = setDefaultTimeout(60 * 1000);
  }
}

setWorldConstructor(CustomWorld);

在一个JS闭包
中,这个
被隐式地设置为外部上下文是什么(通常是全局的)。您需要将函数
.bind()
绑定到此
或使用fat数组表示法:

AfterAll(async () => {
  await this.browser.close();
});
根据:

与Before/After不同,这些方法不会有这样的世界实例。这是因为每个场景都有自己的世界实例,这些钩子在所有场景之前/之后运行


这很不幸,因为我也遇到过这种情况。到目前为止,我的解决方法是在
之前
之后
钩子可用的范围内声明变量,然后将其导入并分配给其文件中的世界对象。

我不使用Cucumber,但在其他框架中,
*所有的
块都有不同的
上下文而不是测试块,因为测试上下文是为每个测试创建的,而
*所有的
都只计算一次。参考资料证实了这一点。对于每一个场景,世界都是一个孤立的上下文,暴露在这样的钩子和步骤中。您可能应该为每个测试设置并关闭
浏览器