Подтвердить что ты не робот

Как установить значение в хеше params при тестировании вспомогательного метода Rails с RSpec?

В Ruby on Rails 4, с RSpec 3.1, как мне установить значения хеша params при тестировании вспомогательного метода Rails?

Я хочу установить params[:search] = 'my keyword search' для использования в моем вспомогательном методе, а затем вызвать его из блока it.

спецификации/хелперы/books_helper_spec.rb:

require 'rails_helper'

describe BooksHelper do
  describe "#page_title_helper" do
    let(:params) { {search: 'my keyword search'} }

    it "should read the params hash" do
      expect(helper.params[:search]).to eq "my keyword search"
    end
  end
end

приложение/хелперы/books_helper.rb:

BooksHelper
  def title_helper
    if params[:search]
      "Books related to #{params[:search]}"
    else
      "All Books"
    end
  end
end
4b9b3361

Ответ 1

В RSpec 3 хеш params доступен на объекте контроллера, который доступен в вспомогательных спецификациях. Так, например, чтобы добраться до params[:search], скажем, controller.params[:search].

Здесь расширенный пример, расширенный от вопроса.

context "with a params[:search]" do
  it "returns the search term" do
    controller.params[:search] = 'Test Search'
    expect(helper.title_helper).to eq("Books related to #{params[:search]}".html_safe)
    expect(helper.title_helper).to eq("Books related to Test Search".html_safe)
    expect(helper.title_helper).not_to eq("Books related to Bad Value".html_safe)
  end
end