Antworten:
expect { some_method }.to raise_error
RSpec 1 Syntax:
lambda { some_method }.should raise_error
Weitere Informationen finden Sie in der Dokumentation (zur RSpec 1-Syntax) und in der RSpec 2-Dokumentation .
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
...
Hinweis: raise_error
und raise_exception
sind austauschbar.
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
...
Hinweis: raise_error
ist ein Alias für raise_exception
.
RSpec 2:
RSpec 1:
Verwenden Sie anstelle von Lambda Folgendes:
expect { some_method }.to raise_error
Dies gilt für neuere Versionen von rspec, dh rspec 2.0 und höher.
Weitere Informationen finden Sie im Dokument .
expect
besser oder schlechter ist als lambda
.
expect { visit welcome_path }.to raise_error
Ab Version 3.3 rspec-expections
löst gem eine Warnung für einen leeren Raise_error ohne Parameter aus
expect { raise StandardError }.to raise_error # results in warning
expect { raise StandardError }.to raise_error(StandardError) # fine
Dies gibt Ihnen einen Hinweis darauf, dass Ihr Code möglicherweise mit einem anderen Fehler als dem zu überprüfenden Test fehlschlägt.
WARNUNG: Mit dem
raise_error
Matcher ohne einen bestimmten Fehler oder eine Nachricht Bereitstellung Risiken falsch positive Ergebnisse , daraise_error
passen, wenn Rubin ein wirftNoMethodError
,NameError
oderArgumentError
möglicherweise die Erwartung ermöglicht , ohne auch nur zu passieren Durchführung des Verfahrens Sie zu nennen beabsichtigen. Geben Sie stattdessen eine bestimmte Fehlerklasse oder Nachricht an. Diese Meldung kann durch folgende Einstellungen unterdrückt werden :RSpec::Expectations.configuration.warn_about_potential_false_positives = false
.