2013-03-08 2 views
4

В The training wheels came off сообщение от Aslak Hellesoy говорит, что он удалил web_steps.rb и paths.rb из более свежих версий огурца.Тест вы находитесь на странице с огурцом и Capybara

Я могу понять использование apy Capybara вместо web_steps.rb, но как бы вы теперь протестировали, что находитесь на определенной странице?

Это, как я делал это с paths.rb:

#admin_authentication.feature  
Then I should be on the admin home page 

# paths.rb 
when /the admin home page/ 
    admin_root_path 

# web_steps.rb 
Then /^(?:|I)should be on (.+)$/ do |page_name| 
    current_path = URI.parse(current_url).path 
    if current_path.respond_to? :should 
    current_path.should == path_to(page_name) 
    else 
    assert_equal path_to(page_name), current_path 
    end 
end 

В качестве вторичного вопрос, мы должны делать это на всех?

ответ

8

Как правило, вы не должны проверить путь к странице в шаге огурца. Сценарии огурцов предназначены для написания с точки зрения пользователя. Пользователь обычно интересуется только содержимым страницы, поэтому тест должен проверять содержимое страницы, а не конкретный URL-адрес или контроллер.

Вместо того, чтобы писать сценарий с точки зрения разработчика, как это:

Scenario: Administrator should be on the admin home page 
    When I log in as an administrator 
    Then I should be on the admin home page 

Запись его с точки зрения пользователя, как это:

Scenario: Administrator should have super-user tools 
    When I log in as an administrator 
    Then I should see the disable-abusive-user button 
+1

Я думаю, что этот ответ больше соответствует духу огурца и статье о подготовке колес –

13

Я просто сделать, как это, увидеть, если он работает для вас:

assert page.current_path == admin_root_path 
+0

Этот ответ работал для меня, хотя я не буду использовать его, потому что он не ориентирован на пользователя –

+3

@Paul, вы спрашивали о Capybara, и это код Capybara в моем ответе. Capybara не «сфокусирован на пользователях», огурец. Я думаю, вы их путаете здесь – Benj

+1

Извините за путаницу ... моя вина! –