RSpec 2.7和hash应该是have_key

时间:2011-11-17 23:13:24

标签: ruby rspec

我正在试图弄清楚为什么一个非常简单的“这个哈希有这个关键”我正在编写的规范是失败的。进入我的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。

2 个答案:

答案 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