带参数的方法的RSpec测试ArgumentError

tho*_*nch 14 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
Run Code Online (Sandbox Code Playgroud)

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

module Geolocater
  def ip_lookup(ip_address)
   return ip_address
  end
end
Run Code Online (Sandbox Code Playgroud)

我的规格与此输出一起运行.

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)>'
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Joh*_*ohn 30

你需要传递一个块#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
Run Code Online (Sandbox Code Playgroud)