Spock jeter l'exception de test

Je test le code Java avec Spock. J'ai tester ce 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());
}

J'ai écrit 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()
}

Et il échoue parce que AnotherCustomExceptio est levée. Mais dans le try{}catch bloc je attraper cette exception et de jeter un CustomException donc j'ai attendu que ma méthode va jeter CustomException et pas AnotherCustomExceptio. Comment puis-je le tester?

Pouvez-vous développez le contexte du Code Java, montrant bean et validator, Order?
Il n'est pas clair comment le code de production et de test de code qui s'affiche au-dessus de l'ajustement ensemble. (E. g. il n'y a pas d'appel à la bean#methodName dans la production de code.) Le plus probable, l'exception n'est pas jeté par la essayez-le bloc indiqué ci-dessus. Vous devriez être en mesure de vérifier dans le débogueur.
Avez-vous résolu ce problème?
Je ne sais pas 🙂 j'ai écrit à cette question l'an dernier 🙂 Mais, que diriez-déplacer " de la fève.methodName(_) >> {throw new AnotherCustomExceptio ("Qqch de mal")}" de la section "quand". Pourriez-vous essayer?

OriginalL'auteur Piotr Sobolewski | 2014-03-31