我试图弄清楚为什么一个非常简单的"这个哈希有这个关键"我正在编写的规范是失败的.进入我的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
Run Code Online (Sandbox Code Playgroud)
第一个测试显然是我想要工作的,我正在运行的第二个测试只是为了验证我的REPL环境中是否加载了RSpec.
Cos*_*sti 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
Run Code Online (Sandbox Code Playgroud)
您需要在 RSpec 示例中实际执行此操作,我认为您不能在任何地方编写此类代码。
describe "" do
it "has a key" do
...
end
end
Run Code Online (Sandbox Code Playgroud)