レールを介して生成された「静的」ページ(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
フラッシュ通知をレンダリングするレイアウトに変更し、テキストをレイアウト テンプレートに挿入することさえ試みましたが、仕様を失敗させることはできません。
テンプレートを適切なレイアウトでレンダリングするようrspecに依頼する方法はありますか?
コントローラーの仕様は、これを試みる間違った方法ですか? 使用されているレイアウトとその内容に関係しているため、場違いに思えますが、レンダリング プロセスはコントローラーで開始され、結果を受け取り、レンダリング前にフラッシュ ハッシュの内容を操作できます。
バージョン: rails (3.0.10)、rspec-rails (2.6.1)、rspec-core (2.6.4)
ありがとう、ニック