Capybara- как проверить ссылку на другой раздел той же страницы?

В моем приложении Rails вверху страницы есть следующие ссылки:

<ul>
  <li><%= link_to 'Group Chairperson', '#group_chair' %></li>
  <li><%= link_to 'Group Treasurer', '#group_treasurer' %></li>
  <li><%= link_to 'Group Secretary', '#group_secretary' %></li>
</ul>

Дальше по странице у меня есть следующий селектор строк таблицы:

<tr id="group_chair">

Щелчок по ссылке «Председатель группы» приводит к тому, что браузер прокручивает вниз до нужной строки таблицы, как и ожидалось. Теперь я хочу сделать спецификацию, которая тестирует эту функцию. Я пробовал следующее:

require 'spec_helper'

describe "Group officer duties page" do

  before { visit group_officer_duties_path }

  it "should scroll down to the right section" do
    click_link "Group Chairperson"
    expect(current_url).to eq "http://www.example.com/group_officer_duties#group_chair"
  end

end

Я ожидаю, что этот тест пройдет, поскольку это то, что показывает строка URL моего браузера после нажатия на нужную ссылку. Однако на самом деле я понимаю следующее:

Failures:

  1) Group officer duties page should scroll down to the right section
     Failure/Error: expect(current_url).to eq "http://www.example.com/group_officer_duties#group_chair"

       expected: "http://www.example.com/group_officer_duties#group_chair"
            got: "http://www.example.com/group_officer_duties"

       (compared using ==)
     # ./spec/requests/group_officer_duties_nav_spec.rb:9:in `block (2 levels) in <top (required)>'

Finished in 0.94885 seconds
1 example, 1 failure

Любая идея, что случилось с этим?


person Richie Thomas    schedule 22.09.2013    source источник


Ответы (1)


К сожалению, я считаю, что вам не повезло - следующий ответ исходит от самого Джонаса Никласа:

якорь никогда не отправляется на сервер, поэтому с этой точки зрения для current_url имеет смысл не включать якорь. Боюсь, мы мало что можем сказать об этом поведении изнутри Capybara. Я предполагаю, что проблема доходит до HTMLUnit.

При этом я лично никогда ничего не утверждаю в URL-адресе, я считаю, что это плохая практика в интеграционных тестах. Хотя это всего лишь мое мнение.

/Джонас

https://groups.google.com/forum/#!topic/ruby-capybara/KMEWM8nuZlE

person klaffenboeck    schedule 22.09.2013
comment
Итак, если утверждение против URL-адреса является плохой практикой, лучше ли утверждать против пути? Или в этом случае требуется что-то вроде Selenium? - person Richie Thomas; 23.09.2013
comment
Я думаю, что он на самом деле имеет в виду, что это то, что вы не должны тестировать в тесте интеграции высокого уровня. Вместо этого вы должны проверить это в своем представлении, как показано здесь (хотя я не считайте, что это лучшая практика) - person klaffenboeck; 23.09.2013