2011-12-25 4 views
1

Использование Rails 3.1.0 и Руби 1.9.2p290, я использовал листинг 10.30, чтобы проверить sample_app:Рубин на Rails Tutorial, раздел 10.3.3 терпит неудачу на тестирование

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_s Избиратель, включая его отношение к регулярному выражению я изменил тест следующим образом:

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> 

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

Любая помощь будет оценена по достоинству.

+1

Не могли бы вы, пожалуйста, добавьте ссылку на учебник? –

ответ

0

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

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 (но я не уверен.)