Délimitation de @Mock et @InjectMocks dans le framework Mockito
Le framework Mockito fournit des annotations qui aident à se moquer des objets pendant les tests. Deux annotations couramment utilisées sont @Mock et @InjectMocks, qui jouent des rôles distincts dans le processus de moquerie.
@Mock : une annotation de création simulée
En termes simples, @Mock sert à créer un objet fictif. Il génère un objet factice qui implémente une interface spécifique ou étend une classe spécifique. Les objets simulés sont utilisés pour remplacer les dépendances réelles lors des tests, permettant l'isolement de composants individuels et la simulation de scénarios spécifiques.
@InjectMocks : injecter des simulacres dans une instance de classe
Contrairement à @Mock, @InjectMocks est une annotation plus avancée qui combine moquerie et injection de dépendances. Il crée une instance de la classe testée et, surtout, injecte les objets fictifs créés avec les annotations @Mock (ou @Spy) dans cette instance.
Pour que @InjectMocks fonctionne correctement, il est essentiel d'utiliser @ RunWith(MockitoJUnitRunner.class) ou Mockito.initMocks(this) pour initialiser et injecter les dépendances fictives dans l'instance de classe. Avec JUnit 5, l'annotation @ExtendWith(MockitoExtension.class) est requise.
Voici un exemple qui exploite les deux annotations :
// JUnit 4 @RunWith(MockitoJUnitRunner.class) public class SomeManagerTest { // ... @InjectMocks private SomeManager someManager; @Mock private SomeDependency someDependency; // This mock will be injected into someManager // ... // Tests ... }
En utilisant @InjectMocks, l'instance SomeManager sera créée avec l'objet fictif pour SomeDependency injecté, permettant aux cas de test de se concentrer sur le test du comportement de SomeManager tout en interagissant avec sa dépendance fictive. Cela facilite l'isolement et le test de scénarios spécifiques sans s'appuyer sur de réelles dépendances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!