Я только начал работать с cucumberJs, gulp и транспортиром для углового приложения и заметил, к счастью, когда все мои шаги проходили, что, если вы не проходите и не используете этот параметр "обратного вызова" в определении шага, cucumberJs может НЕ знать, когда этот шаг завершен и пропустит другие шаги и пометит их как "пройденный",
Ниже приведен пример из документа cucumberJs: https://github.com/cucumber/cucumber-js
Пример 1:
this.Given(/^I am on the Cucumber.js GitHub repository$/, function (callback) {
// Express the regexp above with the code you wish you had.
// 'this' is set to a World instance.
// i.e. you may use this.browser to execute the step:
this.visit('https://github.com/cucumber/cucumber-js', callback);
//
Обратный вызов передается для посещения(), так что, когда задание завершено, следующий шаг может//выполняться Cucumber
});
Пример 2:
this.When(/^I go to the README file$/, function (callback) {
// Express the regexp above with the code you wish you had.
Вызов callback() в конце//шага или обратный вызов (null, 'pending'), если этот шаг еще не реализован:
callback(null, 'pending');
});
Пример 3:
this.Then(/^I should see "(.*)" as the page title$/, function (title, callback) {
// matching groups are passed as parameters to the step definition
var pageTitle = this.browser.text('title');
if (title === pageTitle) {
callback();
} else {
callback(new Error("Expected to be on page with title " + title));
}
});
};
Я понимаю, у вас есть 2 варианта: a. Либо вы возвращаете обещание, либо не передаете обратный вызов ИЛИ b. Вы передаете параметр обратного вызова и вызываете его всякий раз, когда определение шага завершено, поэтому cucumberJs знает, чтобы вернуться и перейти к следующему шагу или следующему сценарию.
Тем не менее, я пробовал оба выше и все еще сталкивался с странной ситуацией, когда два верхних сценария будут работать НОРМАЛЬНО, как и следовало ожидать, но третий и четвертый сценарии в этом же файле функций будут пропущены и все пройдены.
Есть ли что-то особенное для рассмотрения особенностей с более чем двумя сценариями? Пока у меня есть <= 2 сценария для каждого файла функций, все работает отлично, но в тот момент, когда у меня был третий сценарий этого файла функции, этот третий сценарий игнорируется и пропускается.
Есть идеи?
Не видя ваших реальных шагов, я не могу сказать точно, но это звучит как асинхронная проблема или осмелюсь сказать, что это синтаксическая ошибка в сценарии. Вы пытались изменить порядок сценариев, чтобы увидеть, оказывает ли это влияние.