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 und validator, 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?
Schreibe einen Kommentar