Unterschied zwischen Mockito @Spy und @Mock (answer = Answers.CALLS_REAL_METHODS)

11

Was ist der Unterschied zwischen diesen beiden Erklärungen in mockito?

%Vor%     
Andrei Amarfii 04.11.2015, 07:46
quelle

1 Antwort

7

Der frühere CALLS_REAL_METHODS-Stil erstellt ein nicht initialisiertes Objekt. Es werden keine Konstruktoren ausgeführt und keine Felder festgelegt. Im Allgemeinen ist diese Syntax unsicher, da reale Implementierungen mit nicht initialisierten Feldern interagieren, die einen ungültigen oder unmöglichen Zustand darstellen können.

Letzteres @Spy-Stil ermöglicht es Ihnen, einen Konstruktor Ihrer Wahl aufzurufen, oder Mockito wird versuchen, einen Konstruktor ohne Argumente aufzurufen, wenn das Feld nicht initialisiert ist . Die Felder werden dann in einen generierten Spy kopiert (der den gespionten Typ erweitert), was viel sicherere und realistischere Interaktionen ermöglicht.

Erforderliche Erinnerung: Veröffentlichen Sie Java-Sammlungen nicht außerhalb von Spielzeugbeispielen und vergessen Sie nicht, die doReturn -Syntax beim Überschreiben von Spionen und CALLS_REAL_METHOD-Mocks zu verwenden. Andernfalls rufen Sie die echte Methode innerhalb des when -Aufrufs auf .

    
Jeff Bowman 04.11.2015, 08:07
quelle

Tags und Links