2014-05-21 14 views
10

Ab 0.20.1 Gurke wird jetzt vollständig in Winkelmesser unterstützt, aber ich kämpfe, um irgendwelche Dokumentation zu finden, wie man es richtig konfiguriert. Irgendeine Idee, wie Sie world.js einrichten würden?So konfigurieren Sie den Winkelmesser für die Verwendung der Gurke

Ich habe dieses Beispiel bei https://github.com/whyvez/angular-cucumber-example/blob/master/features/support/world.coffee gefunden, aber ich bin mir nicht sicher, ob Sie immer noch alle Require-Module und Konfiguration angeben müssten, da die Winkelmesser-Konfigurationsdatei (referenceConf.js) alle diese Informationen bereits hätte.

assert = require 'assert' 
path = require 'path' 

protractor = require 'protractor' 
webdriver = require 'selenium-webdriver' 

driver = new webdriver.Builder(). 
    usingServer('http://localhost:4444/wd/hub'). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build() 

driver.manage().timeouts().setScriptTimeout(100000) 

ptor = protractor.wrapDriver driver 

class World 
    constructor: (callback) -> 
    @browser = ptor 
    @By = protractor.By 
    @assert = assert 
    callback() 

module.exports.World = World 

Antwort

12

Ich habe ein Beispielprojekt erstellt, um zu zeigen, wie man Winkelmesser mit Gurke konfiguriert und die Welt nutzt.

Die Welt ist ein Ort, um Gemeinsamkeiten zwischen verschiedenen Szenarien zu teilen, so dass Sie Ihren Code organisiert halten können.

Eigentlich brauchen Sie nur Ihre World.js Datei in einem Ordner namens/support unter/features zu erstellen. Sie würden dort auch Ihre Haken platzieren. Jede Eigenschaft oder Funktion ist in Ihren Schrittdefinitionen verfügbar.

world.js:

module.exports = function() { 

    this.World = function World(callback) { 
    this.prop = "Hello from the World!"; 

    this.greetings = function(name, callback) { 
     console.log("\n----Hello " + name); 
     callback(); 
    }; 

    callback(); 
} 

Und dann in Ihre Schritte:

var sampleSteps = function() { 

    this.Given(/^this is the first sample$/, function (callback) { 
     console.log("\n----" + this.prop); 
     callback(); 
    }); 

    this.Given(/^this is the second sample$/, function (callback) { 
     this.greetings("everybody", callback); 
    }); 

}; 

module.exports = sampleSteps; 

Ihre protractor.js Konfigurationsdatei würde wie folgt aussehen:

exports.config = { 

    specs: [ 
    'e2e/features/*.feature' 
    ], 

    capabilities: { 
    'browserName': 'chrome' 
    }, 

    baseUrl: 'http://localhost:8081/', 

    framework: 'cucumber', 

}; 

Dies ist die GitHub Repository.

https://github.com/plopcas/st-protractor-cucumber

Hoffnung, das hilft.

+0

Pedro, ich habe dein Beispiel benutzt, um meine Testarbeit zu machen, aber wenn ich es benutze erwarte es schief. Welche Bibliothek soll ich in diesem Fall verwenden? –

+0

Schwer zu sagen, ohne den Fehler zu sehen, aber ich denke, Sie versuchen, das "expect" zu verwenden, das eine globale Jasmine-Funktion ist. Aber da Sie Gurke hier verwenden, haben Sie diese Funktion nicht.Ich benutze gerne Chai.js. Es ist eine ziemlich gute Assertion-Bibliothek. Alles was du brauchst ist var chai = require ('chai'); var expect = chai.expect; und dann benutze es in deinen Schritten. Sie müssen möglicherweise "Chai-as-Versprochen" verwenden, wenn Sie Versprechungen verwenden. Berücksichtigen Sie, dass die Syntax anders ist als die Jasmine-basierte expect-Funktion. –

+0

danke Pedro, ich kam davon ab, zu verwenden und wenn Bedingung zu verwenden, um die Kriterien zu erfüllen und dann Callback(). z.B. if (data && data.indexOf ("Welt")> 0) callback(); sonst callback.fail (neuer Fehler ("wird voraussichtlich auf Seite mit searchTerm" + searchTerm)); –

0

Ich habe von diesem Setup gut milage bekommen

class ChtWorld 
    chai = require('chai'); 
    chaiAsPromised = require('chai-as-promised'); 

    constructor: -> 
     @browser = @protractor = require('protractor').getInstance() 
     @By = @protractor.By 
     chai.use(chaiAsPromised) 
     @expect= chai.expect 


    module.exports= -> 
    this.World= (callback) -> 
     w = new ChtWorld() 
     callback(w) 

Da Winkelmesser bereits eingerichtet ist, nur ein Hinweis darauf bekommen genügt (beachten, dass für Gurke richtig in die neue Welt laden , die modules.exports muss genau richtig sein).

Als eine Randnotiz, das ist in Features/support/world.coffee, und nicht explizit auf der "benötigt" -Liste hinzugefügt (versucht, dies zu tun, hat mich in Gherkin Lexing Fehlerprobleme).

0

es als Rahmen in der Konfigurationsdatei hinzufügen:

exports.config = { 
    // set to "custom" instead of cucumber. 
    framework: 'custom', 

    // path relative to the current config file 
    frameworkPath: 'protractor-cucumber-framework' 

    // relevant cucumber command line options 
    cucumberOpts: { 
    format: "summary" 
    } 
}; 

Weitere Informationen hier: Protractor Frameworks

1

einen Blick auf protractor-cucumbe Take - es kommt mit Selen-WebDriver unterstützt Promises, und gut ist dokumentiert.

Es scheint minimale Konfiguration zu erfordern, und was erforderlich ist, ist klar dokumentiert.

Verwandte Themen