RSpec не отображает тег Head

#ruby-on-rails-3 #view #rspec

#ruby-on-rails-3 #Вид #rspec

Вопрос:

Я провожу некоторое тестирование на предмет создания канонических ссылок на нашем сайте и сталкиваюсь со следующей проблемой Webrat в RSpec.

Вот тест:

 [...setup stuff...]
it "should not render a canonical link rel" do
  assign(:post, @post)
  render
  rendered.should have_selector('link', { :rel => 'canonical', :href => post_path(@post, :only_path => false)})
end
  

И вот результаты:

    Failure/Error: rendered.should have_selector('link', { :rel => 'canonical', :href => post_path(@post, :only_path => false)})
   expected following output to contain a <link href='http://test.host/posts/123913-post-name' rel='canonical'/> tag:
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

   <html><body>

   <div>
   [.... lots more stuff that is rendered properly ....]
  

Как вы можете видеть, между тегами html и body нет тега, который отображается. Однако, когда я получаю доступ к странице напрямую (используя наш сервер), проблем нет. Это проблема конфигурации?

Ответ №1:

Ответ здесь был в вызове «render». Вместо того, чтобы просто говорить «визуализировать», мне нужно установить шаблон и макет. Вот что сработало:

 it "should render a canonical link rel" do
  assign(:post, @post)
  render :template => "posts/show", :layout => "layouts/application"
  rendered.should have_selector('link', { :rel => 'canonical', :href => post_path(@post, :only_path => false)})
end