2017-02-08 7 views
1

私はキュウリ試験をスクリプト化するためにRubyを使用しており、いくつかの変数を定義するときに問題に遭遇しました。Cucumber Ruby - cucumber.ymlの中のスペースENV変数

iPhone 6デバイスでテストを実行する必要があるため、次の(BrowserStack)定義をキュウリのenv.rbファイルに追加しました。

capabilities['device'] = ENV['MOBILE_DEVICE'] 

私のcucumber.ymlファイルに次のプロファイル。

bsmobile: BROWSER_NAME=iPhone PLATFORM=MAC MOBILE_DEVICE='iPhone 6' 

しかし、私はこれをWindows上で実行すると、 'MOBILE_DEVICE' envのスペースが許されません。

私は試しました。

MOBILE_DEVICE="iPhone 6" 
"MOBILE_DEVICE=iPhone 6" 
MOBILE_DEVICE="'iPhone 6'" 
MOBILE_DEVICE='iPhone\ 6' 
MOBILE_DEVICE=iPhone\ 6 

しかし、どれもうまくいきませんでした。

私はここで何かが分かりませんか?

助けがあれば助かります。

+0

「bsmobile」のキーはどこから来たのですか?誰がYamlファイルからそのキーを解析していますか? – Casper

+0

申し訳ありませんが、 'bsmobile'はモバイルデバイスのテスト用にちょうどキュウリのプロファイル名(私がテスト時に与えたもの)です(このキャストiPhone 6では)。だからキュウリのテストを実行すると、すべての環境ではなく、 '-p bsmobile'と入力します。 – DHarls17

答えて

0

私はあなたがスペースを持ってiPhone6としてデバイスを渡すことができると信じています。同じことがiPhone6Sや他のモバイルエミュレータでも有効です。これはすでに試しましたか?

0

答えはline 34 of the cucumber gem file profile_loader.rbに記載されています:

args_from_yml = Shellwords.shellwords(args_from_yml) 

ここから我々はIRBで動作するかを確認するためにテストすることができ、そして少しの実験の後、私たちは、この発見:そのための解決策を

Shellwords.shellwords("xxx yyy zzz=\'aaa bbb\'") 
=> ["xxx", "yyy", "zzz=aaa bbb"] 

をあなたの問題は次のようになります:

MOBILE_DEVICE='iPhone 6' 
関連する問題