web-dev-qa-db-fra.com

Lancer une exception de Mockito

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?

29
Ahmad Usama Beg

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);
43
Makoto

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

0
vaquar khan