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_errorve raise_exceptiondeğ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_erroriç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 .
expectdaha iyi veya daha kötü olduğunu açıklıyor lambda.
expect { visit welcome_path }.to raise_error
rspec-expectionsGem 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_erroreşleyici Belirli bir hatayı veya mesajı vermeden beri, yanlış pozitif riskleriraise_errorRuby bir yükseltir zaman maç olacakNoMethodError,NameErrorya daArgumentErrorpotansiyel 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.