在使用RSpec测试Rails帮助器方法时如何在params哈希中设置一个值?

sea*_*cal 18 rspec ruby-on-rails rspec-rails ruby-on-rails-4 rspec3

在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
Run Code Online (Sandbox Code Playgroud)

应用程序/佣工/ books_helper.rb:

BooksHelper
  def title_helper
    if params[:search]
      "Books related to #{params[:search]}"
    else
      "All Books"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Dav*_*uth 17

在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
Run Code Online (Sandbox Code Playgroud)