Почему @InjectMocks в Java Spring возвращает значение null в моем тестовом примере для службы?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему @InjectMocks в Java Spring возвращает значение null в моем тестовом примере для службы?

Сообщение Anonymous »

Я пытаюсь написать тестовые примеры для службы, которую я реализовал для контроллера в Spring. У меня есть следующие классы обслуживания и тестирования.
StudentCourseRequestService:

Код: Выделить всё

import java.util.List;
import org.springframework.stereotype.Service;
import model.CourseRequest;
import repository.ICourseRequestRepository;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class StudentCourseRequestService implements IStudentCourseRequestService {

private final ICourseRequestRepository courseRequestRepository;

@Override
public boolean requestCourse(CourseRequest courseRequest) {
return courseRequestRepository.saveRequest(courseRequest);
}

@Override
public List getAllCourseRequests() {
return courseRequestRepository.getAllCourseRequests();
}

@Override
public List getAllCourseRequestsOfStudent(Long studentId) {
return courseRequestRepository.getCourseRequestsByStudentId(studentId);
}

}
Тестовый класс:

Код: Выделить всё

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.springframework.boot.test.mock.mockito.MockBean;
import static org.assertj.core.api.Assertions.assertThat;
import model.CourseRequest;
import repository.ICourseRequestRepository;

public class StudentCourseRequestServiceTests {
@MockBean
private ICourseRequestRepository courseRequestRepository;

@InjectMocks
private StudentCourseRequestService studentCourseRequestService;

@Test
public void requestValidCourse() throws Exception {
final CourseRequest courseRequest = new CourseRequest(
"data0",
"data1",
"data2",
"data3",
"data4",
"data5"
);

Mockito.when(courseRequestRepository.saveRequest(courseRequest)).thenReturn(true);
boolean result = studentCourseRequestService.requestCourse(courseRequest);
assertThat(result).isTrue();
}
}
Когда я запускаю тестовый пример requestValidCourse(), я получаю следующую ошибку:

Код: Выделить всё

java.lang.NullPointerException: Cannot invoke "repository.ICourseRequestRepository.saveRequest(model.CourseRequest)" because "this.courseRequestRepository" is null
at service.StudentCourseRequestServiceTests.requestValidCourse(StudentCourseRequestServiceTests.java:29)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at java.base/java.util.ArrayList.forEach(Unknown Source)
Как решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/747 ... -a-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»