1. ホーム
  2. ruby-on-rails

[解決済み] RSpecコントローラのテスト - 空白のresponse.body

2022-10-06 11:30:34

質問

RSpecでコントローラをテストする際に、response.bodyの呼び出しが常に空文字列を返してしまうという問題に直面しています。ブラウザではすべて正しく表示され、cucumber feature テストでは正しく表示されるように見えますが、RSpec では毎回失敗します。

レスポンスオブジェクトに対する他の期待値、たとえば response.should render_template('index') は問題なく通過します。

この問題に遭遇したことのある方はいらっしゃいますか?もしかしたら、他の方法で応答htmlを得ることができるかもしれませんか?

バージョンとしては、Rails 2.1.0、RSpec 1.2.7です。

どのように解決するのですか?

デフォルトでは、rspec-railsはRailsをハックして を防ぐ をハックして、ビューテンプレートを実際にレンダリングしないようにします。テンプレートのレンダリングの結果ではなく、アクション&アンプ; フィルタのコントローラテストの動作だけをテストすべきです。

しかし、もしコントローラのテストで、アプリが通常行うようなテンプレートのレンダリングを行いたい場合は render_views ディレクティブを使用します。

describe YourController do
  render_views
  ...
end