Кажется, я не могу пройти эти тесты Rspec.Я просто не знаю, что именно я делаю не так.Любой совет?Эти тесты удостоверяются, что у каждой охоты есть ссылка на редактирование и удаление, когда администраторы вошли в систему. Я использую FactoryGirl для генерации тестового пользователя-администратора и тестовой охоты.
Вот тесты.
describe "for users who are admins" do
before(:each) do
admin = FactoryGirl.create(:user, :email => "admin@example.com", :admin => true)
test_sign_in(admin)
end
it "should show edit link" do
get 'index'
Hunt.each do |hunt|
response.should have_selector('a', :href => "edit",
:content => "edit")
end
end
it "should show delete link" do
get 'index'
Hunt.each do |hunt|
response.should have_selector('a', :href => "delete" ,
:content => "delete")
end
end
Вот код, который я тестирую.Это из views / hunts.html.erb
<h1>All Hunts</h1>
<%= will_paginate %>
<ul>
<% @hunts.each do |hunt| %>
<li>
<%= link_to hunt.name, hunt %>
<% if current_user && current_user.admin? %>
| <%= link_to "edit", edit_hunt_path(hunt) %>
| <%= link_to "delete", hunt, :method => :delete, :confirm => "You
sure?", :title => "Delete #{hunt.name}" %>
<% end %>
</li>
<% end %>
</ul>
<%= will_paginate %>
<%= link_to( "Create New Hunt", '/hunts/new') %>
А вот соответствующая часть контроллера поиска.
class HuntsController < ApplicationController
def index
@title = "All Hunts"
@hunts = Hunt.paginate(:page => params[:page])
end
....
end
Когда я запускаю rspec, это то, что появляется.
</li>
<li>
<a href="/hunts/30">---
- optio
- et
- sunt
</a>
| <a href="/hunts/30/edit">edit</a>
| <a href="/hunts/30" data-confirm="You sure?" data-method="delete" rel="nofollow" title="Delete ---
- optio
- et
- sunt
">delete</a>
Наконец, вот мой файл factories.rb.
FactoryGirl.define do
factory :user do
sequence(:name) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com"}
password "foobar"
password_confirmation "foobar"
factory :admin do
admin true
end
end
factory :hunt do
name "Test Hunt"
end
end
ОБНОВЛЕНИЕ: Итак, я убрал «а» из исходных тестов.Я также переписал тест, чтобы он смотрел каждую охоту на странице 1.
describe "for users who are admins" do
before(:each) do
admin = FactoryGirl.create(:user, :email => "admin@example.com", :admin => true)
test_sign_in(admin)
end
it "should show edit link" do
get 'index'
Hunt.paginate(:page => 1).each do |hunt|
response.should have_selector(:href => "edit",
:content => "edit")
end
end
it "should show delete link" do
get 'index'
Hunt.paginate(:page => 1).each do |hunt|
response.should have_selector(:href => "delete",
:content => "delete")
end
end
end
Так что теперь у меня появляется другая ошибка:
HuntsController GET 'index' for users who are admins should show edit link
Failure/Error: response.should have_selector(:href => "edit",
Nokogiri::CSS::SyntaxError:
unexpected '{' after ''
Я попытался найти эту ошибку,но не повезло.Видели это раньше?Я не уверен, какой синтаксис я испортил.