2015-03-06 14 views
5

Ben birim aşağıdaki forma istemci çağrısı testi ile garip bir sorunla karşılaştık:forması/mockito: client.post çağrı doğrulamayı NullInsteadOfMockException

PostBody bir MultivaluedMap olduğunu.

birim test accept ve type aramalar ince doğrular ancak bu istisna ile post birinde başarısız:

_client = Mockito.mock(Client.class); 
     _webResource = Mockito.mock(WebResource.class); 
     _builder = Mockito.mock(WebResource.Builder.class); 
     _response = Mockito.mock(ClientResponse.class); 

     Mockito.when(_client.resource(Mockito.anyString())).thenReturn(_webResource); 

     Mockito.when(_response.getEntity(Mockito.any(Class.class))).thenReturn(new RefreshTokenDto()); 
     Mockito.when(_response.getStatus()).thenReturn(200); 

     Mockito.when(_builder.post(Mockito.eq(ClientResponse.class), Mockito.anyObject())).thenReturn(_response); 
     Mockito.when(_builder.type(Mockito.anyString())).thenReturn(_builder); 
     Mockito.when(_webResource.accept(Mockito.anyString())).thenReturn(_builder); 

     RefreshTokenDto response = _clientWrapper.exchangeAuthorizationCodeForToken(_token); 

     Assert.assertNotNull(response); 

     Mockito.verify(_client.resource(_baseUrl + "token")); 
     Mockito.verify(_webResource.accept("application/json")); 
     Mockito.verify(_builder.type("application/x-www-form-urlencoded")); 

     // TODO: this line throws NullRefExc for some unknown reason 
     Mockito.verify(_builder.post(Mockito.any(Class.class), Mockito.any(MultivaluedMap.class))); 

bu yanlış bir şey görebilen: Burada

org.mockito.exceptions.misusing.NullInsteadOfMockException: 
Argument passed to verify() should be a mock but is null! 

test kodu var kod?

cevap

9

Evet. verify'u kötüye kullandınız. verify numaralı argümanın sahte olması gerekir. Ardından, verify tarafından döndürülen değerde doğrulamak istediğiniz yöntemi çağırırsınız. Bu durumda Yani, ilk verify çağrı diğer verify aramalar için

Mockito.verify(_client).resource(_baseUrl + "token"); 

ve benzer şekilde olmalıdır.

+0

Hey - bu gerçekten sorunu çözüyor! "Ne zaman" ve "doğrula" için sözdizimini karıştırdım. Dünden beri bu koda bakıyordum ve neyin yanlış olduğunu anlayamadım. Muhtemelen mockito'ya yeni olduğumu gösterir. Yardım ettiğin için teşekkür ederim! –

+0

Sorun değil. Devam eden öğrenmene iyi şanslar, Joanna. –

İlgili konular