2016-12-19 11 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)

関連する問題