Reputation: 774
I created some public method in controller which does some work.
def current_service
service_name = params[:controller].gsub('api/v1/', '').gsub(%r{/.+}, '')
end
I would like to test this method using RSpec but I dont't know how can I stub params. How should I do that?
Upvotes: 9
Views: 12192
Reputation: 286
For strong parameters you can stub them as following:
params = ActionController::Parameters.new(foo: 'bar')
allow(controller).to receive(:params).and_return(params)
Upvotes: 5
Reputation: 43996
If this is a controller spec, you should be able to do something like this:
allow(controller).to receive(:params).and_return({controller: 'a value'})
Alternatively, move the params[:controller]
statement to a separate method and stub that in your spec.
Upvotes: 13