Yanıtlar:
expect { some_method }.to raise_error
RSpec 1 Sözdizimi:
lambda { some_method }.should raise_error
Daha fazla bilgi için belgelere (RSpec 1 sözdizimi için) ve RSpec 2 belgelerine bakın.
expect { some_method }.to raise_error
expect { some_method }.to raise_error(SomeError)
expect { some_method }.to raise_error("oops")
expect { some_method }.to raise_error(/oops/)
expect { some_method }.to raise_error(SomeError, "oops")
expect { some_method }.to raise_error(SomeError, /oops/)
expect { some_method }.to raise_error(...){|e| expect(e.data).to eq "oops" }
# Rspec also offers to_not:
expect { some_method }.to_not raise_error
...
Not: raise_error
ve raise_exception
değiştirilebilir.
lambda { some_method }.should raise_error
lambda { some_method }.should raise_error(SomeError)
lambda { some_method }.should raise_error(SomeError, "oops")
lambda { some_method }.should raise_error(SomeError, /oops/)
lambda { some_method }.should raise_error(...){|e| e.data.should == "oops" }
# Rspec also offers should_not:
lambda { some_method }.should_not raise_error
...
Not: raise_error
için bir takma addır raise_exception
.
RSpec 2:
RSpec 1:
Lambda yerine şunu kullanın:
expect { some_method }.to raise_error
Bu rspec'in daha yeni sürümleri için geçerlidir, yani rspec 2.0 ve üstü.
Daha fazla bilgi için doco'ya bakın .
expect
daha iyi veya daha kötü olduğunu açıklıyor lambda
.
expect { visit welcome_path }.to raise_error
rspec-expections
Gem 3.3 sürümünden itibaren parametresiz boş bir kaldır_ hatası için uyarı verir
expect { raise StandardError }.to raise_error # results in warning
expect { raise StandardError }.to raise_error(StandardError) # fine
Bu, kodunuzun kontrol edilmesi amaçlanan testten farklı bir hatayla başarısız olabileceğine dair bir ipucu verir.
UYARI: kullanma
raise_error
eşleyici Belirli bir hatayı veya mesajı vermeden beri, yanlış pozitif riskleriraise_error
Ruby bir yükseltir zaman maç olacakNoMethodError
,NameError
ya daArgumentError
potansiyel olarak beklenti bile aramak niyetinde yöntemi yürütme olmadan geçmesine izin. Bunun yerine belirli bir hata sınıfı veya mesaj sağlamayı düşünün. Bu mesaj ayarı ile düşürülmüştür edilebilir:RSpec::Expectations.configuration.warn_about_potential_false_positives = false
.