Que fait unit-test-service-layer ?
Fournit des modèles pour les tests unitaires de la couche service avec Mockito. Crée des tests isolés qui simulent les appels au référentiel, vérifient les invocations de méthodes, testent les scénarios d'exception et simulent les réponses API externes. À utiliser lors du test des comportements du service et de la logique métier sans base de données ni services externes.
Pourquoi utiliser cette compétence ?
- Tests isolés : Simulez les dépendances (référentiels, API, etc.) pour vous concentrer uniquement sur la logique métier.
- Vérification des interactions : Validez que les méthodes sont appelées avec les bons paramètres.
- Scénarios d'exception : Testez les cas d'erreur et les exceptions.
- Simulation d'API : Stubbez les réponses externes pour des tests prévisibles.
- Maintenabilité : Écrivez des tests clairs et faciles à comprendre.
Plateformes prises en charge
- Claude Code
- Cursor
- Codex
- Autres outils compatibles avec les compétences d'agent IA
Comment l'utiliser
- Importez les dépendances nécessaires (Mockito, JUnit).
- Créez une classe de test pour votre service.
- Utilisez les annotations
@Mocket@InjectMocks. - Écrivez des tests qui simulent les appels et vérifient les résultats.
Exemple de code
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class UserServiceTest {
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
@Test
public void testGetUserById_ShouldReturnUser() {
// Arrange
User mockUser = new User(1L, "John Doe");
when(userRepository.findById(1L)).thenReturn(Optional.of(mockUser));
// Act
User result = userService.getUserById(1L);
// Assert
assertNotNull(result);
assertEquals("John Doe", result.getName());
verify(userRepository).findById(1L);
}
@Test(expected = UserNotFoundException.class)
public void testGetUserById_WhenUserNotFound_ShouldThrowException() {
// Arrange
when(userRepository.findById(anyLong())).thenReturn(Optional.empty());
// Act
userService.getUserById(999L);
}
}
En savoir plus
Consultez la documentation complète pour des modèles avancés, y compris la simulation d'API REST, l'utilisation de ArgumentCaptor et les tests de comportements asynchrones.