2014-05-21 13 views
10

od 0.20.1 Ogórek jest teraz w pełni obsługiwany w Kątomierzu, ale walczę o znalezienie dokumentacji, jak poprawnie go skonfigurować. Masz pomysł na instalację world.js?Jak skonfigurować kątomierz do używania ogórka

Znalazłem ten przykład na , ale nie jestem pewien, czy nadal trzeba określić wszystkie wymagane moduły i konfigurację, ponieważ plik konfiguracyjny kątomierza (referenceConf.js) miałby już wszystkie te informacje.

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 

Odpowiedz

12

Stworzyłem przykładowy projekt pokazujący jak skonfigurować kątomierz z ogórkiem i wykorzystać świat.

Świat to miejsce, w którym można dzielić podobieństwa między różnymi scenariuszami, dzięki czemu można zachować porządek w kodzie.

Właściwie wszystko, czego potrzebujesz, to utworzenie pliku world.js w folderze o nazwie/support under/features. Umieściłbyś tam również swoje haczyki. Każda właściwość lub funkcja będą dostępne w twoich definicjach kroków.

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

a następnie w swoich krokach:

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; 

Twoje protractor.js plik konfiguracyjny będzie wyglądał mniej więcej tak:

exports.config = { 

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

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

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

    framework: 'cucumber', 

}; 

to, że GitHub magazyn.

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

Nadzieja to pomaga.

+0

Pedro, użyłem twojego przykładu, aby wykonać test, ale kiedy używam, oczekuję, że się nie powiedzie. jakiej biblioteki powinienem używać w tym przypadku? –

+0

Trudno powiedzieć, nie widząc błędu, ale domyślam się, że próbujesz użyć "oczekiwać", który jest globalną funkcją Jasmine. Ale biorąc pod uwagę, że używasz Ogórka tutaj, nie masz tej funkcji.Lubię korzystać z Chai.js. To dość dobra biblioteka asercji. Wszystko czego potrzebujesz to var chai = require ('chai'); var expect = chai.expect; a następnie użyj go na własnych krokach. Być może będziesz musiał użyć "chai-as-promised", jeśli korzystasz z obietnic. Weź pod uwagę, że składnia jest inna niż oczekiwana funkcja Jasmine. –

+0

dziękuję Pedro, odstąpiłem od używania oczekiwać i używać, jeśli warunek spełnienia kryteriów, a następnie callback(). na przykład if (data && data.indexOf ("World")> 0) wywołanie zwrotne(); else callback.fail (nowy błąd ("Oczekiwano, że będzie na stronie z searchTerm" + searchTerm)); –

0

stałam dobry przebieg od tej konfiguracji

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) 

Od kątomierz jest już setup, dopiero się odniesienie do niej jest wystarczające (zauważ, że dla Cucumber poprawnie załadować nowy świat , modules.exports musi być w sam raz).

Na marginesie, znajduje się on w funkcji/support/world.coffee i nie jest jawnie dodawany do listy "wymaga" (próbując to zrobić, doprowadził mnie do problemów związanych z korowaniem korniszonów).

0

Dodaj go jako ramy w pliku konfiguracyjnym:

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

Więcej informacji tutaj: Protractor Frameworks

1

Spójrz na protractor-cucumbe - pochodzi z selenu-webdriver wspiera obietnic i jest dobrze udokumentowane.

Wydaje się, że wymaga minimalnej konfiguracji, a to, co jest wymagane, jest wyraźnie udokumentowane.