огурец, rspec, вебрат, если еще на матчере - PullRequest
0 голосов
/ 27 июля 2011

У меня есть определение шага в моем наборе тестов на огурцы, которое аутентифицирует пользователя, и чтобы попытаться ускорить мой набор тестов, я хочу, чтобы этот шаг проверял, что пользователь уже аутентифицирован.Возможно, это плохая идея, потому что это означает, что тесты могут зависеть друг от друга ... Я не знаю.Но как бы я это сделал?К сожалению, я не владею рубином.

Я надеюсь, что смогу отобразить класс в DOM, чтобы я мог проверить это с помощью have_selector или чего-то еще.Это тоже может быть плохой идеей ...

Given /^I am authenticated as a "([^"]*)" user$/ do |role|
  #TODO: only do this if the user is not authenticated
  visit('/login')
  fill_in "name", :with => "something"
  fill_in "pass", :with => "password"
  click_button
  response_body.should contain("Log out")
end

1 Ответ

1 голос
/ 28 июля 2011

Вы правы, это была бы плохая идея. Но если вы действительно хотите сделать это правильно, вы можете проверить любой текст на странице, например, вы можете получить строку состояния с зарегистрированным именем пользователя. Это был бы правильный путь, потому что он имитирует поведение человека, что-то вроде - о, вот мое имя пользователя - это означает, что я уже вошел в систему:)

Вот как может выглядеть ваш шаг:

 Given /^I am authenticated as a "([^"]*)" user$/ do |role|
   unless page.has_content?(username)
     visit('/login')
     fill_in "name", :with => "something"
     fill_in "pass", :with => "password"
     click_button
     response_body.should contain("Log out")
   end
 end
...