【问题标题】:What's wrong with this rspec test这个 rspec 测试有什么问题
【发布时间】:2014-08-13 00:27:07
【问题描述】:

我在 Rails 中有一个辅助类,它有这样的方法:

def doSomething(name, *args)
 result = ""
 args.each do |arg|
  if (name == 'something')
   result += arg
  end
 end 
 result
end

我的 rspec 测试方法是这样的:

it "Should return a hex array for normal input" do
  expect(helper.doSomething("somename", 1, 2,3, 4,5)).to eq("")
end

当我运行 rspec 时,我遇到了以下错误:

参数错误: 参数数量错误(1 代表 0)

我在这里做错了什么?任何帮助表示赞赏。

编辑::::

对不起,这不是完整的代码。我试图创建类似的东西,但在更正我以前的代码时,我在其他部分发现了错误。

【问题讨论】:

  • 你的助手不能像args.map(&:to_s).join if name=='something'这样简单吗?
  • 我们需要更多信息来帮助您。您能否包含完整的堆栈跟踪(不仅仅是错误消息:ArgumentError: wrong number of arguments(1 for 0),而是显示哪个类和哪一行的一组行,例如myproject/app/models/my_model.rb:42 -> 这些行(通常大约有 30 行)是堆栈跟踪行,它们让我们告诉行代码导致了错误。

标签: ruby-on-rails ruby testing rspec


【解决方案1】:

如果您也可以包含错误中的堆栈跟踪,那就太好了。您的测试看起来是正确的,只是您尝试将 fixnums 添加到 result += arg 处的字符串,这将导致隐式转换错误。

我会说先解决这个问题,如果问题仍然存在,请发布更多信息。

【讨论】:

    【解决方案2】:

    我认为您的 rspec 方法中缺少数组语法。

    现在你的 doSomething 方法在 rspec 中有 6 个参数,而它应该有 2 个参数(当你在帮助程序中建立它时它会这样做)。尝试重构这部分 rspec 测试 ("somename", 1, 2,3, 4,5) *数字应该是数组语法。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多