gpt4 book ai didi

javascript - 无法访问 AfterFeatures Hook 中的世界方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:02 25 4
gpt4 key购买 nike

我有一个 AfterFeatures Hook ,我用它来尝试优雅地关闭仅用于测试的 expressjs Web 服务器。在这个钩子(Hook)中,我需要调用已添加到 World 的 visit 方法,但我显然无法从这个钩子(Hook)中访问 World。我该怎么做才能在这个 Hook 和其他 Hook 中访问 World 中的东西?

// features/support/after_hooks.js
var myAfterHooks = function () {
this.registerHandler('AfterFeatures', function (event, callback) {
this.visit('/quit', callback);
});
};
module.exports = myAfterHooks;

最佳答案

我认为你做不到。在 AfterFeatures 中, cucumber 进程已经完成,因此 this 不再引用它。

但是,如果您只想访问一个页面,您可以在 cucumber 外部注册您的浏览器,这样它仍然可以从 AfterFeatures Hook 访问。如果您使用的是 AngularJS + Protractor,Protractor 会为您处理浏览器,因此它仍然可以在 AfterFeatures Hook 中访问。这将是相同的原则。这可以通过以下方式完成。

钩子(Hook).js

var myHooks = function () {


this.registerHandler('AfterFeatures', function (event, callback) {
console.log('----- AfterFeatures hook');
// This will not work as the World is no longer valid after the features
// outside cucumber
//this.visit('/quit', callback);

// But the browser is now handled by Protractor so you can do this
browser.get('/quit').then(callback);
});

};

module.exports = myHooks;

世界.js

module.exports = function() {

this.World = function World(callback) {

this.visit = function(url) {
console.log('visit ' + url);
return browser.get(url);
};

callback();
};
}

cucumber-js GitHub 存储库中的 AfterFeatures 示例有点误导,因为看起来您可以访问之前在 World 中注册的驱动程序。但是,如果您只使用纯 cucumber-js,我还没有看到它起作用。

顺便说一句,你可以只使用它而不是 registerHandler。

this.AfterFeatures(function (event, callback) {
browser.get('/quit').then(callback);
});

希望这对您有所帮助。

关于javascript - 无法访问 AfterFeatures Hook 中的世界方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com