2016-05-19 2 views
0

Я только начал работать с cucumberJs, gulp и транспортиром для углового приложения и заметил, к счастью, поскольку все мои шаги проходили, что, если вы не проходите и не используете этот параметр «обратного вызова» в определении шага, cucumberJs может НЕ знать, когда этот этап завершен и будет пропускать другие шаги, и пометить их все как «прошел»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); 

    // 

обратный вызов - это пропуск ред посетить(), так что, когда закончен, следующий шаг РАБОЧЕГО МЕСТА может // быть выполнен огурцом

. });

Пример 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'); 
    }); 

Пример 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 сценария для каждого файла, все работает нормально, но в тот момент, когда у меня был третий сценарий этого файла функции, этот третий сценарий игнорируется и пропускается.

Любые идеи?

ответ

0

Не видя ваших действительных шагов, я не могу сказать точно, но это звучит как асинхронная проблема или осмелюсь сказать, синтаксическая ошибка в сценарии. Вы пытались изменить порядок сценариев, чтобы увидеть, оказывает ли это влияние.

+0

Hi findlayc, да, это странно, изменение порядка работы сценария, без изменения фактического сценария - в сценарии нет синтаксической ошибки, потому что в противном случае такой же сценарий не будет работать только путем упорядочения порядка. – pelican

+0

Звучит как асинхронная проблема – findlayc

Смежные вопросы