2017-07-20 9 views
0

Node.jsにデータテーブルを含むGherkinステップを実装したいが、どのようにデータを渡すべきかわからない。データテーブルを利用しない作品を知っている。Node.js(およびWebdriverIO)を使用したGherkinデータテーブル

test.feature

Feature: Testing login 
    Scenario: Logging in with credentials 
    When I login with credentials "[email protected]" and "[email protected]" 

login.js

import loginAsCreds from './loginAsCreds' 

module.exports = function when() { 
    this.When(
    /^I login as "(.+)" and "(.+)"/i, 
     loginAsCreds 
) 

loginAsCreds.js

module.exports = (email, password, done) => { 
    browser.element('#email').keys(email) 
    browser.element('#password').keys(password) 
    browser.element('#signInButton').click() 

    done() 
} 

ここで、フィーチャーファイルをどのように見せたいかを示します。

test-desired.feature

Feature: Testing login 
    Scenario: Logging in with credentials 
    When I login with credentials: 
     | [email protected] | [email protected] | 

私はそれを受け入れることをデータテーブルとloginAsCreds.jsを渡すためにlogin.jsを変更するためのいくつかのことを試してみたが、私はNode.jsのとWebdriverIOに新しい(ただし、セレンですかガーキン)。誰かがこれで正しい方向に私を指してくれますか?データテーブルは、私が書く予定の他のステップにも非常に役立ちます。ありがとう!

+0

私は関数を定義したいので、これは私が見つけた最も近いものですが、別のファイル、私はJSの欠けていると思います。 http://grokbase.com/t/gg/cukes/12av4y61em/cucumber-js-passing-arrays –

答えて

0

誰かがcucumber jsのドキュメントを指摘していました。私はそれを検索するために知らなかったので、私はこのページが見つかりました:

https://github.com/cucumber/cucumber-js/blob/9959ca9fd9f8c64f0b5133f9bb241da9b854e570/README.md

...教えてくれた、私はテーブルが2であるので、(データにアクセスするために私の引数に.raw()を追加する必要が-D配列)、およびこの例のポイント:

https://github.com/cucumber/cucumber-js/blob/9959ca9fd9f8c64f0b5133f9bb241da9b854e570/features/data_tables.feature

これは私のコードが今のように見えるものです:

テストdesired.feature

Feature: Testing login 
    Scenario: Logging in with credentials 
    When I login with credentials: 
     | [email protected] | [email protected] | 

login.js

import loginAsCreds from './loginAsCreds' 

module.exports = function when() { 
    this.When(
    /^I login as:/i, 
     loginAsCreds 
) 

loginAsCreds.js

module.exports = (creds, done) => { 
    email = creds.raw()[0][0] 
    password = creds.raw()[0][1] 

    browser.element('#email').keys(email) 
    browser.element('#password').keys(password) 
    browser.element('#signInButton').click() 

    done() 
} 
関連する問題