NullPointerException beim Mocken

Avalon

Bekanntes Mitglied
Hallo, ich schau mir grad das Mocken an. Es klappt leider nicht richtig.
[CODE lang="java" title="class PatientServiceImplTest" highlight="59, 43"]package com.example.demo.service;

import static org.mockito.Mockito.when;

import java.sql.Date;

import org.junit.Assert;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.example.demo.entity.Patient;
import com.example.demo.repository.IPatientRepository;



class PatientServiceImplTest {

Logger logger = LoggerFactory.getLogger(PatientServiceImplTest.class);

@InjectMocks
PatientServiceImpl patientService;

@Mock
IPatientRepository patientRepository;

@BeforeEach
void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}

// @Test
// void testCreatePatient() {
// Patient patient = new Patient();
// long id = 1;
// patient.setId(id);
// patient.setNachname("Test");
// patient.setVorname("Tester");
// when(patientRepository.existsById(id)).thenReturn(true);
// logger.info(patient.getNachname());
// }

@Test
void testGetPatientByID() {
Patient patient = new Patient();
long millis = 1556175797428L;
Date date = new Date(millis);
Assert.assertEquals(millis, date.getTime());
long id = 2;
patient.setId(id);
patient.setGeburtsdatum(date);
patient.setNachname("Test");
patient.setVorname("Tester");
logger.info(patient.toString());
when(patientRepository.findById(id).get()).thenReturn(patient);
}
}[/CODE]

Mit der Zeile 43 im auskommentierten Block (testCreatePatient()) funktioniert es. In dem Block mit der Zeile 59 leider nicht. Die Patient Entität wird korrekt angelegt, aber scheinbar nicht zur zurückgegeben. Hat jemand eine Idee?
 
Ja, wenn findById null zurückgibt kannst du nicht .get aufrufen. Du brauchst 2 Mocks

Oder ein Optional.of(patient) im findById zurückgeben. Wenn es denn ein Optional ist, wie ich vermute
 
Ich liebe dieses Forum. Optional.of(patient) hat es gebracht. Warum bin ich da nicht selber drauf gekommen? Danke!!!! Kann ich das hier irgendwo als gelöst markieren?
 

Zurück
Oben