Учебник по Ruby on Rails, раздел 10.3.3 не проходит тестирование - PullRequest
1 голос
/ 26 декабря 2011

Используя Rails 3.1.0 и Ruby 1.9.2p290, я использовал листинг 10.30 для тестирования sample_app:

   it "should paginate users" do
    get :index
    ...
    response.should have_selector("a", :href => "/users?page=2",
                                       :content => "2")
    ...
  end

Результат:

Failures:

  1) UsersController GET 'index' for signed-in users should paginate users
     Failure/Error: response.should have_selector("a", :href => "/users?page=2",
       expected following output to contain a <a href='/users?page=2'>2</a> tag:

Несмотря на возвращенную веб-страницусодержит следующую строку:

 <a rel="next" href="/users?escape=false&amp;page=2">2</a>

Поскольку я до сих пор не понимаю полного использования have_selector, включая его отношение к регулярному выражению, я изменил тест следующим образом:

it "should paginate users" do
    get :index
    ...
    response.should have_selector('a', :rel => "next", 
                                       :href => "/users?escape=false&amp;page=2",
                                       :content => "2")
  end

И получил:

Failures:

  1) UsersController GET 'index' for signed-in users should paginate users
     Failure/Error: response.should have_selector('a', :rel => "next",
       expected following output to contain a <a rel='next' href='/users?escape=false&amp;page=2'>2</a> tag:
       <!DOCTYPE html>
...

Хотя, как я уже упоминал, страница содержит следующее выражение:

<a rel="next" href="/users?escape=false&amp;page=2">2</a>

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

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 января 2012

Используйте следующее

  it "should paginate users" do
    get :index
    response.should have_selector("div.pagination")
    response.should have_selector("span.disabled", :content => "Previous")
    response.should have_selector("a", :href => "/users?escape=false&page=2",
                                       :content => "2")
    response.should have_selector("a", :href => "/users?escape=false&page=2",
                                       :content => "Next")
  end

Я думаю, что управляющий параметр связан с изменениями в will_paginate (но я не уверен.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...