2016-07-19 7 views
0

、例えば:rake変数を呼び出すコードでその変数を共有する方法は?私は基本的に私のRSpecのテストでそれをターゲット引数を送信し、使用している必要がある何

$ rake unistall_and_run[test_spec.rb] 

Rakefile:

desc 'uninstall app to run tests' 
    task :uninstall_and_run, [:arg] do |t, arg| 
    #note this, i will explain later 
    start_driver(fullReset: true) 

    oi = arg.to_s.split('"')[1] 
    file_dir = (project_home + '/spec/' + oi) 
    exec "rspeC#{file_dir}" 
    end 

start_driverは、その行に呼ばれているが、私はテストを実行するとき(exec "rspec ...")、それは再び呼び出され、渡されたargsはデフォルトで上書きされます(RSpec configのため)。

私がしたいのは、私のRSpecファイルで、すでに呼び出されていて再度実行されないかどうかを確認することです。ここで

がstart_driver方法である:だから

def start_driver(options= {}) if options.empty? capabilities = caps else capabilities = caps(options) end $appium = Appium::Driver.new(caps: capabilities) $browser = $appium.start_driver Appium.promote_appium_methods RSpec::Core::ExampleGroup end

+0

Iドン私が渡した引数はデフォルトで上書きされます。 'start_driver'は' arg'を使用しません。 rspecを実行したときに別の場所で呼び出されたときに 'start_driver'を実行しようとしていませんか、またはrspecによって呼び出されたものに' arg'を渡そうとしていますか? –

+0

私はargsを受け取るためにこのメソッドを作成しました: 'def start_driver(options = {}) options.empty? $ブラウザ= $ appium.start_driver Appium.promote_appium_methods RSpecの::コア:: ExampleGroup : 能力= 他 能力=キャップ(オプション) 終了 $ appium = Appium :: Driver.new(能力キャップ)キャップ終わり – juhlila

答えて

0

、私はそれを行う方法を発見しました。それは美しくない。私が実行したときに、私が欲しい引数でファイルを保存熊手:

desc 'uninstall app to run tests' 
     task :uninstall_and_run, [:arg] do |t, arg| 
     send_custom_caps(fullReset: true) 
     oi = arg.to_s.split('"')[1] 
     file_dir = (project_home + '/spec/' + oi) 
     exec "rspeC#{file_dir}" 
     end 

send_custom_caps方法は次のとおりです。

def send_custom_caps(*opts) 
    file = File.new(custom_caps_file, "w+") 
    File.open(file, 'w') do |f| 
     f.write(opts) 
    end 
    end 

今(この場合は、私のスペックの設定)ルビーコード自体がチェックする場合カスタムargsはstart_driverの前にあります。ここでは(私は名前を変更した)私のカスタムstart_driver方法です:

def start_appium_driver (options= {}) 
    if options.empty? 
     get_caps 
     if $custom_args 
     capabilities = caps($custom_args) 
     else 
     capabilities = caps 
     end 
    else 
     capabilities = caps(options) 
    end 
    $appium = Appium::Driver.new(caps: capabilities) 
    $browser = $appium.start_driver 
    Appium.promote_appium_methods RSpec::Core::ExampleGroup 
    end 

get_caps

def get_caps 
    if File.exist?(custom_caps_file) #$custom_args 
     file = File.read(custom_caps_file) 
     $custom_args = eval(file) 
     File.delete (custom_caps_file) 
    end 
    $custom_args unless $custom_args.defined? 
    end 

は、おそらくこれが最善の解決策はありませんが、それは私のために[OK]を働いている:)

関連する問題