Ich teste Java-Code mit Spock. Ich teste diesen Code:Spock-Throw-Ausnahmetest
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());
}
I Test schrieb:
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, weil AnotherCustomExceptio
geworfen wird. Aber in der try{}catch
Block Ich fange diese Ausnahme und werfen eine CustomException
, so dass ich erwartet, dass meine Methode CustomException
und nicht AnotherCustomExceptio
werfen wird. Wie kann ich es testen?
Können Sie den Kontext des Java-Code erweitern, zeigt 'bean' und' validator', 'Order'? – dmahapatro
Es ist nicht klar, wie der Produktionscode und der Testcode zusammenpassen. (Zum Beispiel gibt es keinen Aufruf von "bean # methodName" im Produktionscode.) Höchstwahrscheinlich wird die Ausnahme nicht von dem oben gezeigten try-Block ausgelöst. Sie sollten dies im Debugger überprüfen können. –
Haben Sie das gelöst? –