我正在用 Selenium 和 PhantomJS 试用 CucumberJS。我已经使用这个 StackOverflow 答案作为指南成功地构建了一个 World 对象。
所以现在我正在测试一些基本的步骤定义,但对如何在步骤结束时执行回调有些困惑。这很好用:
module.exports = function () {
this.World = require("../support/world.js").World;
this.Given(/^I am visiting Google$/, function (callback) {
this.driver.get('http://www.google.com')
.then(function() {
callback();
});
});
};
驱动程序访问 Google.com,直到加载请求的文档后才会触发回调。但是我发现这个语法有点罗嗦,所以我想也许我可以直接传递callback
到then()
我的第一个承诺之后,就像这样:
module.exports = function () {
this.World = require("../support/world.js").World;
this.Given(/^I am visiting Google$/, function (callback) {
this.driver.get('http://www.google.com')
.then(callback);
});
};
然而,这失败console.log
了,似乎callback
. 这是输出:
Scenario: Googling # features/theGoogle.feature:6
Given I am visiting Google # features/theGoogle.feature:7
[object Object]
(::) failed steps (::)
[object Object]
这里发生了什么?我期待它callback
可以简单地传递给then()
函数并在承诺完成后执行。为什么将其包装在匿名函数中使其工作?