2011-07-27 2 views
0

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

Я надеюсь, что смогу отобразить класс в DOM, чтобы я мог проверить это с помощью has_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 
+0

вы можете сделать пользовательский ** visit_by_not_authenticated ** метод и указать webrat для сброса сеанса – Anatoly

+0

@mikhailov спасибо за указание на это. Я посмотрю :) – Rimian

ответ

1

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

Вот как ваш шаг может выглядеть следующим образом:

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 
+0

Спасибо! Итак, почему это была бы плохая идея? Это потому, что тест зависит от предыдущего теста? – Rimian