Блоки Ruby для изменения области видимости определенной переменной - PullRequest
1 голос
/ 16 февраля 2012

Я новичок в 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

Но этот код не будет работать.Любая идея, как изменить область этих вызовов методов, чтобы они вызывали конкретную переменную экземпляра.

1 Ответ

2 голосов
/ 16 февраля 2012

Вы можете сделать это с помощью 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 

Однако я бы сказал, что это делает ваш код непонятным для чтения, поскольку при сканировании кода можно легко пропустить instance_eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...