### Question:
HttpPredicateRouterBuilder implements RouteStarter { @Override public RouteContinuation whenPathStartsWith(final String pathPrefix) { andPredicate(pathStartsWith(pathPrefix)); return continuation; }  @Override RouteContinuation whenMethod(final HttpRequestMethod method); @Override RouteContinuation whenMethodIsOneOf(final HttpRequestMethod... methods); @Override RouteContinuation whenPathEquals(final String path); @Override RouteContinuation whenPathIsOneOf(final String... paths); @Override RouteContinuation whenPathStartsWith(final String pathPrefix); @Override RouteContinuation whenPathMatches(final String pathRegex); @Override RouteContinuation whenPathMatches(final Pattern pathRegex); @Override StringMultiValueMatcher whenQueryParam(final String name); @Override StringMultiValueMatcher whenHeader(final CharSequence name); @Override CookieMatcher whenCookie(final String name); @Override RouteContinuation whenIsSsl(); @Override RouteContinuation whenIsNotSsl(); @Override RouteContinuation when(final Predicate<StreamingHttpRequest> predicate); @Override RouteContinuation when(final BiPredicate<ConnectionContext, StreamingHttpRequest> predicate); @Override StreamingHttpService buildStreaming();  }### Answer:
@Test public void testWhenPathStartsWith() { final StreamingHttpService service = new HttpPredicateRouterBuilder() .whenPathStartsWith("/abc").thenRouteTo(serviceA) .when((ctx, req) -> true).thenRouteTo(fallbackService) .buildStreaming(); when(request.path()).thenReturn("/abc"); assertSame(responseA, service.handle(ctx, request, reqRespFactory)); when(request.path()).thenReturn("/abcdef"); assertSame(responseA, service.handle(ctx, request, reqRespFactory)); when(request.path()).thenReturn("/def"); assertSame(fallbackResponse, service.handle(ctx, request, reqRespFactory)); }