我正在尝试测试通过rails生成的“静态”页面(它们是ERB,但被缓存),不会呈现身份验证系统(Devise)或其他任何地方留下的任何杂散闪光通知。
我试过写这个控制器规范,但似乎 response.body 只呈现模板,而不是它的布局?
describe "so that static caching can be used" do
render_views
specify "flash notices are not rendered" do
# edit: the following flash lines don't do anything
# it's not the right flash object, this one is intended for
# inspecting after request not setting before request
flash[:notice] = "flash boo"
flash[:error] = "flash boo"
flash[:alert] = "flash boo"
get :show, :page => 'privacy_policy'
response.body.should have_content('flash boo')
end
end
class StaticPagesController < ApplicationController
layout 'master'
def show
response.headers['Cache-Control'] = "public, max-age=#{6.hours}"
render "static_pages/#{params[:page]}"
end
end
我已经尝试更改为渲染 Flash 通知的布局,甚至将文本插入到布局模板中,但不能使规范失败。
有没有办法让 rspec 也用适当的布局渲染模板?
控制器规范是尝试执行此操作的错误方法吗?它似乎不合适,因为它更多地与正在使用的布局及其内容有关,但渲染过程从控制器开始,它接收结果,我可以在渲染之前操纵闪存哈希内容。
版本:rails (3.0.10)、rspec-rails (2.6.1)、rspec-core (2.6.4)
谢谢,尼克