错误的数字参数(0表示1)(ArgumentError)

时间:2015-12-31 06:43:53

标签: ruby-on-rails ruby rspec

看起来rspec没有向方法传递任何参数,即使它们是在spec文件中写的。

方法:

def echo(msg)
  msg
end

测试:

require './echo.rb'

describe echo do
  it 'echoes' do
    expect(echo('hello')).to eq('hello')
  end
end

终端输出:

/home/.../scratch/echo.rb:1:in `echo': wrong number of arguments (0 for 1) (ArgumentError)
from /home/.../scratch/scratch_spec.rb:3:in '<top (required)>'
from /home/.../.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1361:in 'load'
...

1 个答案:

答案 0 :(得分:2)

你应该改变:

describe echo do

为:

describe 'echo' do

即。将方法名称作为字符串。否则,它会尝试在此时调用echo方法,并且您不会在此处传递参数,因此您会收到上述错误。

所以,这应该是完美的:

describe 'echo' do
  it 'echoes' do
    expect(echo('hello')).to eq('hello')    
  end
end