2011-12-25 35 views
1

使用Rails 3.1.0失敗和Ruby 1.9.2p290,我使用了清單10.30測試sample_app:Ruby on Rails的教程,第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> 

所以我我想我在試圖過濾這個表達式時做錯了什麼。 我對如何使用have_selector進行了一些調查,但我找不到任何有意義的東西。

任何幫助,將不勝感激。

+1

可否請你添加一個鏈接到教程? – 2011-12-26 01:14:18

回答

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的變化(但我不知道。)