2011-08-16 2 views
1

私はgoogleに行く簡単なwatir(web-driver)スクリプトを持っています。しかし、私はオプションのパーサを使用して、ブラウザでcmdを選択する引数を設定したいと思います。以下は私のスクリプトです:Firefoxの-f DOC --browser RSpecのietest.rbを実行OptionParserとrspecを使用できません

require 'optparse' 
require 'commandline/optionparser' 
include CommandLine 
require 'watir-webdriver' 

describe 'Test google website' do 

    before :all do 

    options = {} 

    opts = OptionParser.new do |opts| 

     opts.on("--browser N", 
     "Browser to execute test scripts") do |n| 
     options[:browser] = n 
     $b = n.to_s 
     end 
    end 

    opts.parse! ARGV 

    p options 
    end 

    describe 'The test website should be displayed' do 

    it 'should go to google' do 
     $ie = Watir::Browser.new($b) 
     #go to test website 
    $ie.goto("www.google.com") 
    end 
    end 
end 

はちょうど私に無効なオプションを与える、ietestは私のファイルの名前です。スクリプトコードを変更することなく、Webドライバを使用してブラウザを設定する他の直観的な方法も歓迎します。

答えて

7

rspec実行ファイル自体が独自のオプションを解析するため、OptionParserでrspecを使用することはできません。 rspecオプションでオプションを「ピギーバック」することはできません。

あなたはこのような何かをしなければならない場合は、どちらかの設定ファイル(spec_config.ymlまたは類似)を使用するか、または環境変数を使用します。そして、あなたのコードでは、あなたが取得するためにENV['BROWSER']を使用することができます

BROWSER=firefox spec test_something.rb

とを設定します。

+0

情報をありがとう! – Sun

0

私はあなたがそれについて(単なるGoogleそれ)を持っていないと推測しているので、RSpecについて学んでください。期待はなく、あなたはその中にあなたの機能を書いています。

require 'optparse' 
require 'commandline/optionparser' 
include CommandLine 
require 'watir-webdriver' 

options = {} 

opts = OptionParser.new do |opts| 

opts.on("--browser N", 
    "Browser to execute test scripts") do |n| 
    options[:browser] = n 
end 

opts.parse! ARGV 

p options 

ie = Watir::Browser.new(options[:browser].to_s) 
#go to test website 
ie.goto("www.google.com") 

これでうまくいくはずです。

EDIT:テストしたい場合は、このような何かを:

def open_url_with_browser(url, browser = 'firefox') 
    nav = Watir::Browser.new(browser) 
    nav.goto(url) 
end 

は、その後、あなたは仕様でそのメソッドをテストします。 newgotoを異なる仕様でスタブしてください。

まだ無効なオプションが表示されているのは、--browserrspecに渡すのではなく、意図した通りです。

+0

私はrspecで動作するようにしたいと思っていましたが、私が書いたrspecコードは悪いですが、rspecとOptionParserの使い方を簡単に見ていました。しかし、助けてくれてありがとう。 – Sun

+0

私は答えを編集しました。もう少し助けになるかもしれません。 – Serabe

+0

もう一度お手伝いしてくれてありがとうございました。 – Sun

関連する問題