Как установить значение в хеше 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
Ответы
Ответ 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