Вам необходимо ввести шов, где экземпляры A
предоставляются для Handler
. Такой шов позволяет вводить макеты / заглушки / подделки для целей тестирования.
Решением может быть что-то простое:
class MyHandler implements Handler<RoutingContext> {
private final Supplier<A> aSupplier;
MyHandler(Supplier<A> aSupplier) { // <-- this is your test seam
this.aSupplier = aSupplier;
}
@Override
public void handle(RoutingContext ctx) {
final HttpServerResponse response = ctx.response();
try {
A a = aSupplier.get(); // <-- a mocked version can return 'A' in any state
a.handleSomething();
}
catch (Exception ex) {System.out.println(ex);}
}
}
Разделение Handler
на его собственный тип дает дополнительное преимущество, заключающееся в возможности его тестирования изолированно, но это не так. т абсолютно необходимо.