Я пытаюсь использовать CucumberJS с Selenium и PhantomJS. Я успешно провел built a World object using this StackOverflow answer в качестве руководства.Выполнение обратного вызова из CucumberJS с определением шага селена
Итак, теперь я тестирую некоторые базовые определения шага, но с некоторой путаницей о том, как выполнить обратный вызов в конце шага. Это прекрасно работает:
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()
и выполнен после выполнения обещания. Почему его обертывание анонимной функцией заставляет его работать?