Spock throw-exception-test
Den ich zum testen von Java-code mit Spock. Ich Teste diesen code:
try {
Set<String> availableActions = getSthAction()
List<String> goodActions = getGoodAction()
if (!CollectionUtils.containsAny(availableActions ,goodActions )){
throw new CustomException();
}
} catch (AnotherCustomExceptio e) {
throw new CustomException(e.getMessage());
}
Ich schrieb test:
def "some test"() {
given:
bean.methodName(_) >> {throw new AnotherCustomExceptio ("Sth wrong")}
def order = new Order();
when:
validator.validate(order )
then:
final CustomException exception = thrown()
}
Und es schlägt fehl, da AnotherCustomExceptio
geworfen wird. Aber in der try{}catch
block ich diese Ausnahme abfangen und werfen Sie einen CustomException
so erwartete ich, dass meine Methode wirft CustomException
und nicht AnotherCustomExceptio
. Wie kann ich es testen?
- Können Sie erweitern den Kontext des Java-Codes, die zeigen
bean
undvalidator
,Order
? - Es ist nicht klar, wie die Produktion von code und test-code oben zusammen passen. (E. g. es ist kein Aufruf
bean#methodName
in die Produktion von code.) Wahrscheinlich, damit die exception nicht geworfen wird von der try-block oben gezeigt. Sie sollten in der Lage sein zu überprüfen, diese in den debugger. - Haben Sie dieses Problem gelöst?
- Ich weiß nicht 🙂 ich schrieb diese Frage Jahr 🙂 Aber, was bewegen " - Bohne.methodName(_) >> {throw new AnotherCustomExceptio ("Sth falsch")}" "wenn" - Abschnitt. Sie könnten versuchen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glaube ich nicht, dass
then
block, der repariert werden muss. Versuchen Sie die folgende syntax: