Передача существующей переменной в метод Ruby

Я пытаюсь написать тест, чтобы убедиться, что существующие пользователи не могут зарегистрироваться (используя Cucumber, Watir-Webdriver и объекты страницы)

У меня есть следующий код:

  text_field(:email, :id => "user_email")
  text_field(:password, :id => "user_password")
  text_field(:password_confirmation, :id => "user_password_confirmation")
  checkbox(:terms_privacy, :id => "user_accepts_terms")
  button(:sign_up_button, :text => "Sign Up")

  def unique_username 
    @username = "qa_automation"+"#{rand(6 ** 6)}"+"@gmail.com"
  end  

  def sign_up
    unique_username
    self.email = @username
    self.password = USERS['PASSWORD']
    self.password_confirmation = USERS['PASSWORD']
    self.check_terms_privacy
    self.sign_up_button
    puts "username: #{@username}"
    @existing = @username
  end   

  def sign_up_with_existing_account
    puts "exisiting username: #{@existing}"
    self.email = @exisiting
    self.password = USERS['PASSWORD']
    self.password_confirmation = USERS['PASSWORD']
    self.check_terms_privacy
    self.sign_up_button
    puts "username: #{@existing}"
  end

Но переменная @existing ничего не возвращает. Эти две строки ничего мне не возвращают:

puts "exisiting username: #{@existing}"
self.email = @exisiting

Итак, я думаю, я пытаюсь понять, как передать переменную @existing из метода «sign_up» в метод «sign_up_with_existing_account»? Мысли?


person Farooq    schedule 27.10.2014    source источник
comment
В слове "существующий" опечатка   -  person Bala    schedule 27.10.2014
comment
Я думаю, вам нужно показать, как вы используете объект страницы (вероятно, шаги огурца). В частности, вызываете ли вы sign_up и sign_up_with_existing_account в одном и том же экземпляре?   -  person Justin Ko    schedule 27.10.2014
comment
@JustinKo Вот так в моем шаге определения: on_page(RegistrationNew).sign_up on_page(RegistrationNew).sign_up_with_existing_account   -  person Farooq    schedule 27.10.2014
comment
Это создаст два разных экземпляра страницы RegistrationNew. @existing будет установлен только в первом случае.   -  person Justin Ko    schedule 27.10.2014


Ответы (1)


Вы не можете и не должны этого хотеть. Тестирование превратилось бы в запутанный беспорядок, если бы выполнение одного теста могло повлиять на результат другого. Вы должны заранее настроить существующего пользователя (используя, например, Before), чтобы любой тест, которому требуется существующий пользователь, мог воспользоваться им.

person Max    schedule 27.10.2014