【问题标题】:rspec stub giving wrong number of arguments errorrspec 存根给出错误数量的参数错误
【发布时间】:2023-03-03 00:15:01
【问题描述】:

我正在从 rails 3.2.19 升级到 rails 4.1.5。我正在使用 rspec-rails 2.14.0.rc1。

使用 rails 4.1.5,我的所有测试都通过了,除了少数使用存根的测试。失败的形式是:

ENV.stub(:[]).with("ADWORDS_RUN").and_return("Yes")
Rails.stub(env: ActiveSupport::StringInquirer.new("production"))
Kernel.stub(:rand).and_return(2)

每个都返回ArgumentError: wrong number of arguments (1 for 2+)。所有人都在 3.2.19 的轨道上通过。我试过回到 rspec-rails 2.8.1,但同样的错误。也是rails 4.0,但错误仍然存​​在。最后一个错误(存根:rand)在我运行整个测试套件时不会发生,但在我为该测试运行单个测试文件时会发生。这是一个示例测试

it "should have google tracking code in production" do
  Rails.stub(env: ActiveSupport::StringInquirer.new("production"))
  get :home
  response.body.should =~ /Google Analytics Tracking code/
end

这是测试的输出:

 Failure/Error: Rails.stub(env: ActiveSupport::StringInquirer.new("production"))
 ArgumentError:
   wrong number of arguments (1 for 2+)
 # ./spec/controllers/pages_controller_spec.rb:107:in `block (4 levels) in <top (required)>'

第 107 行是 Rails.stub 行。

请告诉我如何解决这个问题?

【问题讨论】:

  • 如果您的 Gemfile 中有 gem 'minitest', require: 'minitest/autorun',请尝试将其更改为 gem 'minitest'
  • 哪一行给出了错误?
  • 仅供参考,我在 RSpec 3.0 中运行了您的代码并通过了。您使用旧版本的 RSpec 有什么原因吗?你自己跑过这三行吗?无论如何,如果您需要更多帮助,我建议您发布引发错误的特定行,最好是堆栈跟踪?
  • 响应 Santosh,我没有在我的 gemfile 中指定 minitest,但我的 spec_helper.rb 中有 require 'minitest/autorun。作为对 Brad Werth 的回应,每一行都给出了错误,它们用于不同的测试。作为对 Peter Alfin 的回应,我开始使用 rspec 3,但遇到了 spork 的问题,所以回到 rspec 2。当行没有导致异常时,你如何获得堆栈跟踪,即它只是一个失败的测试。
  • 据我所知,ArgumentError: wrong number of arguments (1 for 2+) 不会因为测试失败(即预期失败)而输出。这是由于在某处执行了某些语句。你能分享你的确切输出吗?

标签: ruby-on-rails rspec


【解决方案1】:

我没有设法找到导致此问题的原因,但我确实找到了解决方法。它将所有 stub 语句更改为更新的 rspec allow 语法。比如

 Rails.stub(env: ActiveSupport::StringInquirer.new("production"))

变成

allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production"))

我使用 rspec-rails 2.14.0.rc1 完成了这项工作。这解决了问题。

感谢 cmets,他们要么澄清了我的问题,要么为我指明了正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多