Comment écrire mockito junit pour la méthode ci-dessous:
@Autowired
RestTemplate restTemplate;
ResponseEntity<?> execute(final String url, HttpMethod httpMethod,
HttpEntity<?> entityRequest,
String.class,
Map<String, String> urlVariables){
restTemplate.exchange(url, httpMethod, entityRequest, responseType, urlVariables);
}
S'il vous plaît, aidez-moi à écrire.
@RunWith(MockitoJUnitRunner.class)
public class ToTestTest {
@InjectMocks
private YourClass toTest;
@Mock
private RestTemplate template;
@Test
public void test() {
toTest.execute(Mockito.anyString(), Mockito.any(), Mockito.any(),
Mockito.any(), Mockito.any());
Mockito.verify(template, Mockito.times(1))
.exchange(Mockito.anyString(),
Mockito.<HttpMethod> any(),
Mockito.<HttpEntity<?>> any(),
Mockito.<Class<?>> any(),
Mockito.<String, String> anyMap());
}
}
Je pense que l'approche la plus pratique et la plus appropriée dans ce cas (qui est côté client REST test en utilisant RestTemplate
) sera MockRestServiceServer
fourni par Spring Testing framework.
Cela dépend de ce que vous voulez.
Une façon d'utiliser les mocks est de faciliter l'appel de la méthode execute
. Pour cela, vous pouvez utiliser des versions simulées des paramètres réels, tels que HttpMethod
et HttpEntity
. Si la méthode sous-jacente exchange
nécessite un certain comportement de ces paramètres, vous devrez peut-être le remplacer avec les méthodes when
... thenReturn
de mockito.
Une fois ces paramètres simulés configurés pour que vous puissiez appeler vos méthodes execute
, vous voudrez vérifier que son résultat est correct.
Pour vérifier la valeur renvoyée, vous pouvez utiliser les assertions JUnit traditionnelles.
De plus, vous voudrez peut-être vérifier que certaines interactions avec les objets raillés ont bien eu lieu. Pour cela, vous pouvez utiliser les méthodes verify
de mockito pour vérifier, par exemple, qu'une certaine méthode HttpEntity
est effectivement invoquée.
Techniquement, vous pouvez également vérifier que la méthode exchange
du modèle de repos est appelée. Pour cela, vous devez vous moquer du RestTemplate et injecter la maquette dans votre classe en cours de test. Ensuite, vous pouvez utiliser verfiy
de mockito pour vérifier que exchange
est appelé correctement. C'est généralement la chose raisonnable à faire, surtout s'il y a plus de méthodes à tester dans votre classe en cours de test. Pour la méthode execute
actuelle, cela semble un peu exagéré.