2011-12-25 96 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的变化(但我不知道。)

相关问题