我在让这个简单的测试通过 RSpec 2.8 时遇到了问题。
我想编写一个简单的测试来检测需要参数的方法是否缺少参数(即 ArgumentError:参数数量错误('x' 代表 '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)>'
我在这里错过了什么?
最佳答案
您需要将一个 block 传递给#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
关于ruby - RSpec 在带参数的方法上测试 ArgumentError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822085/