LoginSignup
2
2

More than 5 years have passed since last update.

Controller の RSpec でヘルパーメソッドを利用したい

Last updated at Posted at 2015-09-02

やりたいこと

Controller の spec ファイルの中でヘルパーメソッドを利用したい。

実現方法

controller.view_context に委譲します。

  • controller はテスト対象のコントローラーのインスタンスを返します。
  • view_context にはビューのインスタンスを返します。

ApplicationHelper に定義した nl2br というメソッドを
sisters_controller_spec.rb でも使いたいとします。

app/helpers/application_helper.rb
module ApplicationHelper
  # 改行を <br> タグに変換する。
  def nl2br(str)
    return '' if str.blank?
    ERB::Util.h(str).gsub(/(\r\n?)|(\n)/, '<br>').html_safe
  end
end
spec/controllers/sisters_controller_spec.rb
describe SistersController, type: :controller do
  render_views

  describe '#show' do
    # controller.view_context に委譲する。
    delegate :nl2br, to: 'controller.view_context'

    let(:umaru) do
      create(
        :sister,
        name: '土間 うまる',
        note: <<-NOTE.strip_heredoc
          外では容姿端麗・品行方正・スポーツ万能・成績優秀と、
          どれを取っても完璧な「美妹 (びもうと)」として通っている。
          しかし、家に帰った途端にグータラな生活を好む「干物妹 (ひもうと)」と化す。
        NOTE
      )
    end

    it 'レスポンスが成功すること' do
      get(:show, id: umaru.id)

      expect(response).to have_http_status(:success)
    end

    it 'レスポンスボディの中身が正しいこと' do
      get(:show, id: umaru.id)

      # 呼べる!!!
      expect(response.body).to include(nl2br(umaru.note))
    end
  end  
end
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2