Je veux lancer une ContentIOException
d'une méthode dont la signature ressemble à ceci.
public void putContent(InputStream is) throws ContentIOException.
Quand j'essaye de lancer ContentIOException
de Mockito comme ceci:
when(StubbedObject.putContent(contentStream)).thenThrow(ContentIOException.class);
Je reçois l'erreur de compilation suivante:
The method when(T) in the type Mockito is not applicable for the arguments (void).
Qu'est-ce que je fais mal?
Jetez un coup d'oeil à cette référence dans l'API officielle . Vous souhaitez inverser la façon dont votre appel est effectué et ajuster l'argument également, car il s'agit d'une méthode void
qui devrait générer une exception.
doThrow(new ContentIOException()).when(StubbedObject).putContent(contentStream);
Vous pouvez utiliser le code suivant
when(testRepositoryMock.findOne(123)).thenThrow(new NullPointerException());
Ensuite, après que vous puissiez vérifier votre logique
String erroResponse= service.testMethodForResponse(accountNum);
JSONObject jsonObj = new JSONObject(erroResponse);
String _acNo = jsonObj.getString("accountNum");
assertEquals(accountNum, _acNo);
}
Si vous utilisez le démarrage de printemps, ajoutez top of class
@SpringBootTest
@RunWith(MockitoJUnitRunner.class)
À l'intérieur de la classe, vous devez injecter un objet
@InjectMocks //actual object you want to get test coverage
private TestService testService;
@Mock //Mock object which call by actual object for mocking
private testRepository testRepositoryMock;
Lien de référence: http://www.baeldung.com/mockito-behavior