@Override public void validateResponse(Object response) { interceptorMetadata.validate(response); Type typeMethod = method.getGenericReturnType(); Type adaptedTypeMethod = interceptorMetadata.adaptType(typeMethod); Object adaptedResponse = interceptorMetadata.adaptResponse(response); MockeryMetadata mockeryMethod = mockeryMetadata .fromMethod(providersClass, method, adaptedTypeMethod, null); checkSupportType.from(providersClass, method, mockeryMethod, adaptedTypeMethod); mockeryMethod.validate(adaptedResponse); }
@Test public void When_Get_Mockery_Metadata_From_Method_And_Type_Is_Supported_Then_Not_Get_Exception() throws NoSuchMethodException { Method method = Providers.class.getMethod("supportedTypeMethod"); Type type = method.getGenericReturnType(); MockeryMetadata mockery = getMockeryMetadata .fromMethod(Providers.class, method, type, null); checkSupportTypeUT.from(Providers.class, method, mockery, type); }
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getDeclaringClass() == Object.class) { return method.invoke(this, args); } InterceptorMetadata interceptor = getInterceptorMetadata. with(mockingClass, method, args); try { applyValidationsToParams(method, args); Type adaptedTypeMethod = interceptor .adaptType(method.getGenericReturnType()); MockeryMetadata mockery = getMockeryMetadata .fromMethod(mockingClass, method, adaptedTypeMethod, args); checkSupportType.from(mockingClass, method, mockery, adaptedTypeMethod); Object response = mockery.legal(); return interceptor.onLegalMock(response); } catch (AssertionError e) { return interceptor.onIllegalMock(e); } }
@Test public void When_Get_Mockery_Metadata_From_Method_With_One_Mockery_Get_Mockery_Metadata() throws NoSuchMethodException { Method method = Providers.class.getMethod("oneMockeryMethod"); Type type = method.getGenericReturnType(); MockeryMetadata mockeryMetadata = getMockeryMetadata .fromMethod(Providers.class, method, type, null); mockeryMetadata.legal(); assertNotNull(mockeryMetadata); }
@Test public void When_Get_Mockery_Metadata_From_Method_Without_Mockery_Get_Exception() throws NoSuchMethodException { Method method = Providers.class.getMethod("noMockeryMethod"); Type type = method.getGenericReturnType(); try { getMockeryMetadata.fromMethod(Providers.class, method, type, null); fail(); } catch (RuntimeException e) { String expectedMessage = Messages .noMockeryFoundOnMethod(Providers.class, method); assertThat(expectedMessage, is(e.getMessage())); } }
@Test public void When_Get_Mockery_Metadata_From_Method_With_Multiple_Mockery_Get_Exception() throws NoSuchMethodException { Method method = Providers.class.getMethod("multipleMockeryMethod"); Type type = method.getGenericReturnType(); try { getMockeryMetadata.fromMethod(Providers.class, method, type, null); fail(); } catch (RuntimeException e) { String expectedMessage = Messages .multipleMockeryOnMethodOrParam(Providers.class, method); assertThat(expectedMessage, is(e.getMessage())); } }
@Test public void When_Get_Mockery_Metadata_From_Method_But_Method_Type_Is_Not_Supported_Then_Get_Exception() throws NoSuchMethodException { Method method = Providers.class.getMethod("notSupportedTypeMethod"); Type type = method.getGenericReturnType(); try { MockeryMetadata mockery = getMockeryMetadata .fromMethod(Providers.class, method, type, null); checkSupportTypeUT.from(Providers.class, method, mockery, type); fail(); } catch (RuntimeException e) { assertThat(e.getMessage(), is("When checking ValidMockery on method Providers#notSupportedTypeMethod \n" + " an attempt to use it with class java.lang.Object was found. But it is not a supported type for ValidMockery.\n" + "To fix it, use ValidMockery with: [double, class java.lang.Double, float, class java.lang.Float, int, class java.lang.Integer, long, class java.lang.Long, class java.lang.String, class java.lang.Character].\n")); } }