2012-02-15 16 views
1

私はRubyの初心者ですが、このコードを改善できると感じています。Rubyブロックでスコープを特定の変数に変更する

class LoginPage < BasePage 
     def initialize(session) 
     @session = session 
     end 

     def login(params) 
     @session.within '#login-form' do 
      @session.fill_in 'Login', with: params[:login] 
      @session.fill_in 'Password',with: params[:password] 
     end 
     @session.click_button 'Login' 
     end 
    end 

私のような何かを行うに考えていた:

@session do 
    within '#login-form' do 
    fill_in 'Login', with: params[:login] 
    fill_in 'Password', with params[:password] 
    end 
    click_buttton 'Login' 
end 

をしかし、このコードは動作しません。どのようにこれらのメソッド呼び出しのスコープを変更して特定のインスタンス変数を呼び出すかについてのアイデア。

答えて

2

instance_evalでこれを行うことができます。

@session.instance_eval do 
    within '#login-form' do 
    fill_in 'Login', with: params[:login] 
    fill_in 'Password', with params[:password] 
    end 
    click_buttton 'Login' 
end 

しかし、私は、これはコードをスキャンするときに1が簡単にinstance_evalを欠場する可能性があるので読むために混乱してコードを作ると主張していると思います。

関連する問題