RSpec 2.7 и хеш должен иметь ключ - PullRequest
9 голосов
/ 18 ноября 2011

Я пытаюсь выяснить, почему очень простая «у этого хэша есть этот ключ» спецификация, которую я пишу, терпит неудачу. Зайдя в мой 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

Первый тест - это, очевидно, то, что я хочу получить, и второй тест, который я запускаю, просто чтобы убедиться, что RSpec загружен в мою среду REPL.

Ответы [ 2 ]

22 голосов
/ 23 августа 2012

На самом деле вы можете использовать средства соответствия RSpec вне блоков "it". Вам просто нужно включить RSpec :: Matchers.

[ ~/work/mobile_server (master)]$ irb
>> require 'rspec'
true
>> include RSpec::Matchers
Object < BasicObject
>> {a: 1}.should have_key(:a)
true
4 голосов
/ 18 ноября 2011

Вы должны сделать это на примере RSpec, я не думаю, что вы можете написать такой код где-либо.

describe "" do
  it "has a key" do
     ...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...