Rails - Rspec - stub params

mik*_*927 8 ruby rspec ruby-on-rails

我在控制器中创建了一些公共方法,它做了一些工作.

 def current_service
    service_name = params[:controller].gsub('api/v1/', '').gsub(%r{/.+}, '')
 end
Run Code Online (Sandbox Code Playgroud)

我想使用RSpec测试这个方法,但我不知道怎样才能使用params.我该怎么办?

Cod*_*eef 11

如果这是一个控制器规范,你应该可以做这样的事情:

allow(controller).to receive(:params).and_return({controller: 'a value'})
Run Code Online (Sandbox Code Playgroud)

或者,将params[:controller]语句移动到您的规范中的单独方法和存根.