9

「プレーンな古い Ruby」プレゼンター オブジェクトを作成することにより、いくつかのカスタム コントローラー ヘルパー メソッドに依存するコードをクリーンアップする作業を行っています。私のコントローラーでは、ビュー コンテキストをクラスに渡すことができます。

def show
  # old code: view_context.bad_helper_method
  @foobar = FoobarPresenter.new(Foobar.find(params[:id]), view_context)
end

class FoobarPresenter
  def initialize(model, view_context)
    @model = model
    @view_context = view_context
  end

  def something
    @view_context.bad_helper_method
  end
end

しかし、私は私のテストで何に合格するかわかりません。helper/view_context を動的にプルして、渡す必要がないようにしたいと思います。

コントローラーの外部でビュー/コントローラーのヘルパー コンテキストにアクセスするにはどうすればよいですか?

これは Rails 3.2 プロジェクトです。

4

4 に答える 4

0

この回答に基づいて、次の(少し変更されたバージョン)がうまくいきました:

  1. に以下を追加rails_helper.rb
config.include ActionView::TestCase::Behavior, file_path: %r{spec/presenters}

(プレゼンタークラスが/presentersフォルダーにあると仮定します)

  1. viewこの後、次のメソッドを使用してスペック内のビュー コンテキストにアクセスできます。
FoobarPresenter.new(Foobar.new, view)
于 2021-08-26T01:17:31.017 に答える