Используя 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&page=2">2</a>
Поскольку я до сих пор не понимаю полного использования have_selector, включая его отношение к регулярному выражению, я изменил тест следующим образом:
it "should paginate users" do
get :index
...
response.should have_selector('a', :rel => "next",
:href => "/users?escape=false&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&page=2'>2</a> tag:
<!DOCTYPE html>
...
Хотя, как я уже упоминал, страница содержит следующее выражение:
<a rel="next" href="/users?escape=false&page=2">2</a>
Так что, я думаю, я что-то не так пытаюсь отфильтровать это выражение.Я провел некоторое исследование о том, как работать с have_selector, но не смог найти ничего значимого.
Любая помощь будет принята с благодарностью.