我正在试图弄清楚为什么一个非常简单的“这个哈希有这个关键”我正在编写的规范是失败的。进入我的Ruby REPL我正在尝试以下...
[3] pry(main)> a_hash = {:a=>"A"}
=> {:a=>"A"}
[4] pry(main)> a_hash.should have_key :a
NoMethodError: undefined method `have_key' for main:Object
from (pry):4:in `<main>'
[5] pry(main)> a_hash.keys.length.should == 1
=> true
[8] pry(main)> a_hash.has_key? :a
=> true
第一个测试显然是我想要工作的,我正在运行的第二个测试只是为了验证我的REPL环境中是否加载了RSpec。
答案 0 :(得分:22)
你可以在“it”块之外实际拥有RSpec匹配器。您只需要包含RSpec :: Matchers。
[ ~/work/mobile_server (master)]$ irb
>> require 'rspec'
true
>> include RSpec::Matchers
Object < BasicObject
>> {a: 1}.should have_key(:a)
true
答案 1 :(得分:4)
你需要在RSpec示例中实际执行此操作,我认为你不能在任何地方编写这种代码。
describe "" do
it "has a key" do
...
end
end