Cucumber-js: Что случилось с параметром cucumberOpts? Это больше не поддерживается?

Созданный на 6 июн. 2017  ·  5Комментарии  ·  Источник: cucumber/cucumber-js

Этот выпуск является продолжением https://github.com/angular/protractor/issues/4311 . Здесь я обсуждаю изменения синтаксиса о том, как использовать транспортир для выполнения скриптов Cucumberjs.

По просьбе @wswebcreation https://github.com/wswebcreation я закрыл эту другую проблему и открыл новую здесь.

Итак, мой последний комментарий был ...

Последний рекорд успешной казни у меня был 12 мая 2017 года, 14:03. Точная дата в вашем документе.

Ваш пример с тегами очень упрощен ... как тогда я должен вызывать 3 тега, два, которые должны быть выполнены, и один, который игнорируется. До 12 мая это работало нормально, но теперь это не так:

protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags ~<strong i="13">@ignore</strong> --cucumberOpts.tags <strong i="14">@smoke</strong>,@sprint

В вашем документе говорится, что теперь это должно быть так, но не работает, возвращает то же сообщение об ошибке, которое я отправил с «тикетом».

protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags '<strong i="18">@smoke</strong> or <strong i="19">@rt</strong>' --cucumberOpts.tags 'not <strong i="20">@ignore</strong>'

Ошибка: ошибка: указано более одного файла конфигурации
в C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 155: 15
в C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 307: 21
в Array.forEach (собственный)
в parseArgs (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 305: 16)
в Object.Argv.self.parse (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 140: 16)
на объекте. (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 158: 21)
в Module._compile (module.js: 571: 32)
в Object.Module._extensions..js (module.js: 580: 10)
в Module.load (module.js: 488: 32)
в tryModuleLoad (module.js: 447: 12)

Я вижу в документе Cucumber, что также изменился синтаксис кодирования для определения шага? Зачем все усложнять сейчас? Потому что с новым синтаксисом я должен сгруппировать шаги по сценариям. Но есть ли некоторые шаги, которые повторяются в нескольких сценариях, таким образом, повторяя код в каждом сценарии? Я получу дублирование в моем коде. Почему?

Вот фрагмент того, что у меня есть СЕЙЧАС в моем файле test.spec.js:

this.Given('I am testing my Widget Application', function (callback) {
    edirp.edirejectwidgetlink.click().then(function(){ 
        callback();
    }).catch(function(reason) {
        console.log('ERROR: Widget button not found');
        callback(reason);
    });
});

this.When('There are records in the Widget List', function() {
    edirp.edigetrow.count().then(function(cnt){
        if(cnt>0){
            return recordsFound = cnt;
        }else{
            return recordsFound = 0;
        }
    });
});


this.Then('Header name of the Widget List is '(.+)'', function(header, callback) {
    expect(po.headertext.getText()).to.eventually.equal(header).then(function(){ 
        callback();
    }).catch(function(reason) {
        console.log('Warning: Incorrect Text.');
        callback(reason);
    });
});

Вот фрагмент того, что предлагается в качестве «обновления» ... для меня это ПОНИЖЕНИЕ:

var seleniumWebdriver = require('selenium-webdriver');
var {defineSupportCode} = require('cucumber');

defineSupportCode(function({Given, When, Then}) {
  Given('I am testing my Widget Application', function (callback) {
    edirp.edirejectwidgetlink.click().then(function(){ 
        callback();
    }).catch(function(reason) {
        console.log('ERROR: Widget button not found');
        callback(reason);
    });

  When('There are records in the Widget List', function() {
    edirp.edigetrow.count().then(function(cnt){
        if(cnt>0){
            return recordsFound = cnt;
        }else{
            return recordsFound = 0;
        }
    });
  Then('Header name of the Widget List is '(.+)'', function(header, callback) {
    expect(po.headertext.getText()).to.eventually.equal(header).then(function(){ 
        callback();
    }).catch(function(reason) {
        console.log('Warning: Incorrect Text.');
        callback(reason);
    });
});

Если в сценарии есть несколько Данных, Когда, Тогда ... должны ли они быть перечислены здесь, например ?:
defineSupportCode (function ({Дано, И, И, Когда, И, И, Тогда, И, И, И}) {

Если это правда ... Итак, теперь, если я хочу снова использовать шаг «Когда есть записи в виджете EDI-Rejects» в другом сценарии моей функции, нужно ли мне снова кодировать всю функцию?

Все, что мне нужно, это ответы с аргументами. Не принимайте это на свой счет.

Все 5 Комментарий

Если в сценарии есть несколько Данных, Когда, Тогда ... должны ли они быть перечислены здесь, например ?:
defineSupportCode (function ({Дано, И, И, Когда, И, И, Тогда, И, И, И}) {

Нет. Given , When и Then - это функции, которые можно вызывать несколько раз (аналогично this.Given и т. Д. Из 1.x). And не является функцией. Вы можете увидеть все функции, переданные defineSupportCode в Справочнике по README.md

Я вижу в документе Cucumber, что также изменился синтаксис кодирования для определения шага?

См. Https://github.com/cucumber/cucumber-js/issues/679

Зачем все усложнять сейчас? Потому что с новым синтаксисом я должен сгруппировать шаги по сценариям.

Это не правда

Спасибо, проверю!

@charlierudolph Tnx за объяснение!

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги