2011-11-17 12 views
9

Neden çok basit bir "bu karınca bu anahtarı var" anlamaya çalışıyorum yazıyor spec başarısız oluyor. Çalışmaya almak ve ikinci bir test sadece RSpec benim REPL ortamında yüklenen doğrulamak için koşuyorum istediğiniRSpec 2.7 ve hash olması gerekir_key

[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 

ilk test besbelli ... Ben aşağıdakileri çalışıyorum benim Yakut repl girecek .

cevap

4

Bunu bir RSpec örneğinde yapmanız gerekir, bu tür bir kodu herhangi bir yere yazabileceğinizi düşünmüyorum.

describe "" do 
    it "has a key" do 
    ... 
    end 
end 
+0

Katılıyorum ama henüz denemedim ama umut verici görünüyor güzel bir mücevher var. https://github.com/amatsuda/interactive_rspec – lucapette

+0

Özgün olarak bir 'blah_spec.rb' dosyasında 'des/it' bloğu içinde sarılmış ve ruby ​​'un tanımlanmamış yöntemi' have_key' için sarılmış # yazdım (NoMethodError) – cfeduke

+0

D'oh! Aslında 'it' bloğunu özlüyordum, onu 'anladım' düz bir şekilde yapıyordum ... ve şimdi işe yarıyor! – cfeduke

22

Aslında "it" bloklarının dışında RSpec eşleştiricileriniz olabilir. Sadece RSpec :: Matchers'ı eklemeniz gerekiyor.

[ ~/work/mobile_server (master)]$ irb 
>> require 'rspec' 
true 
>> include RSpec::Matchers 
Object < BasicObject 
>> {a: 1}.should have_key(:a) 
true 
+0

Bu kesinlikle daha iyi/daha bilgilendirici bir cevap olduğunu düşünüyorum. @Costi için teşekkürler. –

+0

RSpec 3'te "wait ({a: 1}). Have_key (: a)" yazmalısınız. – Evmorov