Maison  >  Article  >  Java  >  @MockBean, @Mock ou Mockito.mock() : quelle approche moqueuse devriez-vous choisir ?

@MockBean, @Mock ou Mockito.mock() : quelle approche moqueuse devriez-vous choisir ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 05:17:27859parcourir

  @MockBean, @Mock, or Mockito.mock(): Which Mocking Approach Should You Choose?

Comprendre @MockBean, @Mock et Mockito.mock() pour une moquerie efficace

Dans le domaine des tests logiciels, la moquerie des dépendances joue un rôle un rôle crucial dans l’isolement et le test des composants individuels. Parmi les différentes approches disponibles, cet article explore les nuances entre @MockBean, @Mock et Mockito.mock() pour la moquerie des dépendances.

@Mock (@Mock et Mockito.mock())

@Mock et Mockito.mock() de Mockito sont fonctionnellement équivalents et permettent de se moquer de classes ou d'interfaces, permettant ainsi enregistrement et vérification des comportements. L'approche basée sur les annotations est souvent préférée pour sa concision.

@MockBean (Spring Boot)

@MockBean est une classe Spring Boot spécialement conçue pour introduire des simulations dans un Contexte d'application Spring. Contrairement à @Mock, il ne remplace pas les beans existants mais ajoute ou remplace les beans compatibles avec la classe moquée.

Quand utiliser quoi ?

La décision entre @Mock et @MockBean dépend des exigences du test. Pour les tests unitaires qui ne nécessitent pas de dépendances Spring Boot et donnent la priorité à la vitesse d'exécution, @Mock est recommandé.

Cependant, si le test repose sur le conteneur Spring Boot et nécessite de se moquer ou de remplacer les beans conteneur, @MockBean propose une solution pratique. solution.

Exemple typique de @MockBean

Une tranche de test Web utilisant @WebMvcTest utilise souvent @MockBean pour simuler les dépendances :

@MockBean
private FooService fooServiceMock;

Dans la méthode de test, le service simulé peut être configuré et son comportement vérifié :

@Test
public void testExample() throws Exception {
    Foo mockedFoo = new Foo("one", "two");
    Mockito.when(fooServiceMock.get(1)).thenReturn(mockedFoo);

    mvc.perform(get("foos/1")
       .accept(MediaType.TEXT_PLAIN))
       .andExpect(status().isOk())
       .andExpect(content().string("one two"));
}

En comprenant les fonctionnalités distinctes de @MockBean, @Mock et Mockito.mock(), les développeurs peuvent sélectionner l'approche la plus appropriée pour leurs besoins spécifiques de moquerie, conduisant à une approche efficace et efficiente. tests.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn