FrontController extends AbstractAjaxController { Method getControllerMethod(final String methodName, final Object controllerInstance, final Object[] args, final String cacheKey) { final Class<?> controllerClass = controllerInstance.getClass(); Method controllerMethod = this.methodNames.get(cacheKey); if (controllerMethod == null) { try { final Class<?>[] classes = getClasses(args); controllerMethod = controllerClass.getMethod(methodName, classes); this.methodNames.put(cacheKey, controllerMethod); } catch (final NoSuchMethodException e) { throw new StepInternalException("Unable to find matching method for " + methodName, e); } } return controllerMethod; } @Inject  FrontController(final Injector guiceInjector,
                           final AppManagerService appManagerService,
                           final ClientErrorResolver errorResolver,
                           final Provider<ClientSession> clientSessionProvider,
                           final Provider<ObjectMapper> objectMapperProvider);  static final String UTF_8_ENCODING; }
@Test public void testGetControllerMethod() throws IllegalAccessException, InvocationTargetException { final BibleInformationService bibleInfo = mock(BibleInformationService.class); final BibleController controllerInstance = new BibleController(bibleInfo, this.clientSessionProvider, null); final Method controllerMethod = this.fcUnderTest.getControllerMethod("getAllFeatures", controllerInstance, null, null); controllerMethod.invoke(controllerInstance); verify(bibleInfo).getAllFeatures(); }