2016-12-19 10 views
1

IamRequestImpl.javamockito/powermockito를 사용하여 IamRequest impl 클래스를 조롱하는 방법은 무엇입니까?

public class IamRequestImpl<E> extends IamRequest { 
    public IamRequestImpl(Iam iam, String s, String s1, Object o, Class aClass) { 
     super(iam, s, s1, o, aClass); 
    } 
} 

GcsHelper.java

public <T> T getServiceAccountKey(IamRequestInitializer req, Iam iam, String requestString, 
      String api) throws IOException { 
     IamRequestImpl<String> iamRequestImpl= new IamRequestImpl<String>(iam, HttpMethods.POST, requestString, String.class, 
       ServiceAccountKey.class); 
     iamRequestImpl.setKey(api); 
     iamRequestImpl.setFields(SchedulerConstants.JSON_KEY_FIELDS); 
     req.initializeJsonRequest(iamRequestImpl); 
     return (T) request.execute(); 
    } 

GCSHelperTest.java

@RunWith(PowerMockRunner.class) 
@PrepareForTest({ IamRequestImpl.class, ServiceAccountKey.class}) 
@Test 
    public void testGetServiceAccountKeyOnSuccess() throws Exception{ 
     IamRequestInitializer mockIamRequestInitializer = Mockito.mock(IamRequestInitializer.class); 
     IamRequestImpl<String> mockIamRequestImpl = PowerMockito.mock(IamRequestImpl.class); 
     PowerMockito.whenNew(IamRequestImpl.class).withAnyArguments().thenReturn(mockIamRequestImpl); 
     when(mockIamRequestImpl.setKey("apiKey")).thenReturn(mockIamRequestImpl); 
     when(mockIamRequestImpl.setFields("apiKey")).thenReturn(mockIamRequestImpl); 
     Mockito.doNothing().when(mockIamRequestInitializer).initializeJsonRequest(mockIamRequestImpl); 
     spyGCSUtils.getServiceAccountKey(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); 
    } 

iamRequestImpl로 NullPointerException이 대향 testGetServiceAccountKeyOnSuccess 테스트 케이스 조롱되지 실행.

+0

때문에 당신이 처음에 조롱해서는 안 기본적으로 구조체처럼 보인다. –

+0

그러면이 시나리오에 대한 테스트 사례를 어떻게 작성할 수 있습니까? – Extreme

+0

실제 문자열과 객체를 지정하면됩니다. –

답변

1

Mockito.any()을 다음과 같이 구체적으로 object으로 변환하십시오.

spyGCSUtils.getServiceAccountKey((IamRequestInitializer)Mockito.any(), (Iam)Mockito.any(), Mockito.anyString(), Mockito.anyString()); 

getServiceAccountKey(IamRequestInitializer, Iam, String, String)