RSpec不渲染Head标记

时间:2011-04-13 19:58:01

标签: ruby-on-rails-3 view rspec

我正在对我们网站上的规范链接的创建进行一些测试,并且在RSpec中遇到了以下Webrat问题。

以下是测试:

[...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 个答案:

答案 0 :(得分:1)

这里的答案是在“渲染”电话中。我不需要只是说“渲染”,而是需要设置模板和布局。这是有效的:

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