带参数的方法的RSpec测试ArgumentError

时间:2012-01-11 15:40:13

标签: ruby unit-testing rspec

我在使用这个简单的测试传递RSpec 2.8时遇到了问题。

我想为需要它们的方法缺少参数编写一个简单的测试(即ArgumentError:错误的参数数量('y'代表'y'))。

我的测试是测试Gem模块方法,如下所示:

describe "#ip_lookup" do
  it "should raise an ArgumentError error if no parameters passed" do
    expect(@geolocater.ip_lookup).to raise_error(ArgumentError)
  end
end

我的gem模块代码如下所示:

module Geolocater
  def ip_lookup(ip_address)
   return ip_address
  end
end

我的规格以此输出运行。

Failure/Error: expect(@geolocater.ip_lookup).to raise_error(ArgumentError)
     ArgumentError:
       wrong number of arguments (0 for 1)
     # ./lib/geolocater.rb:4:in `ip_lookup'
     # ./spec/geolocater_spec.rb:28:in `block (3 levels) in <top (required)>'

我在这里缺少什么?

1 个答案:

答案 0 :(得分:27)

您需要将块传递给#expect,而不是常规参数:

describe "#ip_lookup" do
  it "should raise an ArgumentError error if no parameters passed" do
    expect { @geolocater.ip_lookup }.to raise_error(ArgumentError)
  end
end