Tester un service
Tester les services avec Mockito
Puisqu'on veut simplement tester la logique des services dans le cas présent, on voudra simuler les repository qui sont utilisés par le service. Cela évitera également de devoir faire des appels à la base de données dans les tests unitaires.
Configuration
- Créer un dossier
repositoriessoussrc/test/{nom du package} - Dans ce dossier, créer les classes nécessaires pour tester les services.
NomServiceTests - Ajouter le décorateur
@ExtendWith(MockitoExtension.class)à la classe.
- Puisqu'on veut simuler les repositories qu'on utilisera, on les ajoute à la configuration de la classe avec le décorateur
@Mock - On pourra ensuite injecter le service dans la classe de test en utilisant le décorateur
@InjectMockspour injecter les repositories.
@ExtendWith(MockitoExtension.class)
public class ChatServiceTests {
@Mock
private ChatRepository chatRepository;
@InjectMocks
private ChatService chatService;
}
Écrire les tests
Les tests seront similaires à ceux des contrôleurs. On configurera les appels aux repositories pour indiquer quelles données ils doivent retourner.
Ainsi on s'assure que le service fait l'appel adéquat à ceux-ci et que les données retournées correspondent à ce qu'on s'attend.
Exemple
@ExtendWith(MockitoExtension.class)
public class ChatServiceTests {
@Mock
private ChatRepository chatRepository;
@InjectMocks
private ChatService chatService;
@Test
public void ChatService_findAll_RetourneChats() {
Chat chat = new Chat(1, "Mitaine", "Gris", 4);
Chat chat2 = new Chat(2, "Picsou", "Noir et blanc", 3);
when(chatRepository.findAll()).thenReturn(Arrays.asList(chat, chat2));
List<Chat> chats = chatService.findAll();
Assertions.assertNotNull(chats);
Assertions.assertEquals(2, chats.size());
}
}