Argument Captor liefert NULL zurück

8u3631984

Bekanntes Mitglied
Hallo zusammen ich möchte meinen Service gerne testen :
Hier ist der Service, den ich testen möchte :
Java:
    @Override
    public T save(T databaseDocument) {
        Objects.requireNonNull(databaseDocument, "database document ca not be null");
        
        T savedDatabaseDocument = repository.saveAndFlush(databaseDocument);
        log.info("saved database document : [{}]", savedDatabaseDocument);

        return savedDatabaseDocument;
    }

Ich habe auch schon mit der "@nonNull" annotation von Lombok hermumgespielt. Aber es ist das gleiche Resultat :
Code:
    @Test
    @DisplayName("can save media document")
    void canSaveMediaDocument() {
        ArgumentCaptor<MediaDocument> argumentCaptor = ArgumentCaptor.forClass(MediaDocument.class);
        service.save(argumentCaptor.capture());

        verify(repository, times(1)).saveAndFlush(argumentCaptor.capture());
    }

Der Test liefert an der save Methode einen NULL Pointer.
Ich verwende im Test folgende Mocks :

Code:
@ExtendWith(MockitoExtension.class)
public class MediaDocumentServiceTest {

    private MediaDocumentService service;

    @Mock
    private JpaRepository<MediaDocument, Long> repository;

    @BeforeEach
    private void init() {
        service = new MediaDocumentService(repository);
    }

Hat jemand eine Idee ?
Vielen Dank
 
Ich habe auch schon mit der "@nonNull" annotation von Lombok hermumgespielt. Aber es ist das gleiche Resultat :
Code:
    @Test
        service.save(argumentCaptor.capture());
Der Aufruf ist falsch. Da einen Capture zu übergeben ergibt überhaupt keinen Sinn. Dort übergibst du eine ganz normale Java Klasse.

Du brauchst für deinen Test gar keinen ArgumentCapture. Der ist dafür da, wenn du an das Objekt, das an den Mock übergeben wird, gar nicht dran kommst, weil es z.B. per new in der Methode erzeugt wird.

Das heißt, schmeiß den ArgumentCapture komplett weg, übergib einfach ein MediaDocument und prüf, dass das an die save & flush Methode übergeben wird. Fertig.
 

Neue Themen


Zurück
Oben