【问题标题】:Rails - Rspec - stub paramsRails - Rspec - 存根参数
【发布时间】:2019-07-18 16:37:03
【问题描述】:

我在控制器中创建了一些公共方法来做一些工作。

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

我想使用 RSpec 测试此方法,但我不知道如何存根参数。我该怎么做?

【问题讨论】:

  • 这是一个陈述,而不是一个问题。
  • 你是对的,我添加了问题。

标签: ruby-on-rails ruby rspec


【解决方案1】:

如果这是一个控制器规范,您应该能够执行以下操作:

allow(controller).to receive(:params).and_return({controller: 'a value'})

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

【讨论】:

  • 很好的答案。我的问题是我使用了described_class 而不是controller,它导致了错误。谢谢。
  • 强参数测试怎么样?
  • 谢谢@codebeef - 您是否会知道如何使用请求规范来完成这项工作?
【解决方案2】:

对于强参数,您可以将它们存根如下:

params = ActionController::Parameters.new(foo: 'bar')
allow(controller).to receive(:params).and_return(params)

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2023-03-03
    相关资源
    最近更新 更多