Cucumber-js: Was ist mit dem Parameter "cucumberOpts" passiert? Wird das nicht mehr unterstützt?

Erstellt am 6. Juni 2017  ·  5Kommentare  ·  Quelle: cucumber/cucumber-js

Diese Ausgabe ist eine Fortsetzung dieser https://github.com/angular/protractor/issues/4311 . Wo ich die Änderungen an der Syntax bespreche, wie man den Winkelmesser zum Ausführen von Cucumberjs-Skripten verwendet.

Wie von @wswebcreation https://github.com/wswebcreation angefordert, habe ich dieses andere Problem geschlossen und hier ein neues eröffnet.

Also, mein letzter Kommentar war dieser....

Die letzte Aufzeichnung einer erfolgreichen Hinrichtung, die ich habe, war am 12. Mai 2017, 14:03 Uhr. Genau das Datum in Ihrem Dokument.

Ihr Beispiel zu Tags ist sehr einfach ... wie soll ich dann 3 Tags aufrufen, zwei müssen ausgeführt werden und eine wird ignoriert. Vor dem 12. Mai funktionierte dies problemlos, jetzt funktioniert es nicht mehr:

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

Ihr Dokument sagt jetzt, dass es so sein sollte, funktioniert aber nicht, gibt dieselbe Fehlermeldung zurück, die ich mit dem "Ticket" gesendet habe.

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>'

Fehler: Fehler: mehr als eine Konfigurationsdatei angegeben
unter C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\built\cli.js:155:15
unter C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:307:21
bei Array.forEach (nativ)
at parseArgs (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:305:16)
at Object.Argv.self.parse (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:140:16)
bei Objekt. (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\built\cli.js:158:21)
bei Module._compile (module.js:571:32)
bei Object.Module._extensions..js (module.js:580:10)
bei Module.load (module.js:488:32)
bei tryModuleLoad (module.js:447:12)

Kann ich im Gurkendokument sehen, dass sich auch die Codierungssyntax für die Schrittdefinition geändert hat? Warum es jetzt komplizierter machen? Denn mit der neuen Syntax muss ich Schritte nach Szenarien gruppieren. Aber es gibt einige Schritte, die in mehreren Szenarien wiederholt werden, wodurch Code in jedem Szenario wiederholt wird? Ich werde mit Redundanzen in meinem Code enden. Wieso den?

Hier ist ein Ausschnitt dessen, was ich JETZT in meiner Datei test.spec.js habe:

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);
    });
});

Hier ist ein Ausschnitt von dem, was als "Update" vorgeschlagen wird ... für mich ist es ein DOWNGRADE:

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);
    });
});

Wenn das Szenario mehrere Gegeben, Wann, Dann... hat, müssen diese hier so aufgezählt werden?:
defineSupportCode(function({Gegeben, Und, Und, Wann, Und, Und, Dann, Und, Und, Und}) {

Wenn das wahr ist... Wenn ich nun den Schritt "Wenn Datensätze im EDI-Rejects-Widget vorhanden sind" in einem anderen Szenario in meiner Funktion erneut verwenden möchte, muss ich dann die gesamte Funktion erneut codieren?

Alles was ich brauche sind Antworten mit Argumenten. Nimm es nicht persönlich.

Alle 5 Kommentare

Wenn das Szenario mehrere Gegeben, Wann, Dann... hat, müssen diese hier so aufgezählt werden?:
defineSupportCode(function({Gegeben, Und, Und, Wann, Und, Und, Dann, Und, Und, Und}) {

Nein. Given , When und Then sind Funktionen, die Sie mehrmals aufrufen können (ähnlich wie this.Given usw. aus 1.x). And ist keine Funktion. Sie können alle von defineSupportCode in der API-Referenz sehen, auf die von README.md verlinkt wird

Kann ich im Gurkendokument sehen, dass sich auch die Codierungssyntax für die Schrittdefinition geändert hat?

Siehe https://github.com/cucumber/cucumber-js/issues/679

Warum es jetzt komplizierter machen? Denn mit der neuen Syntax muss ich Schritte nach Szenarien gruppieren.

Das ist nicht wahr

Danke das werde ich prüfen!

@charlierudolph Tnx für die Erklärung!

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen in letzter Zeit keine Aktivität stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen