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 да не включва котвата. Боя се, че можем да разберем много малко за това поведение отвътре на Капибара. МОЕТО предположение е, че проблемът стига до 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