Как написать модульный тест с методом контроллера, в котором есть защищенный кодJAVA

Программисты JAVA общаются здесь
Anonymous
Как написать модульный тест с методом контроллера, в котором есть защищенный код

Сообщение Anonymous »

Я пытаюсь написать модульный тест для следующего контроллера:

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

@RestController
@RequestMapping(value = ENDPOINT_URL)
public class MainController extends RestControllerBase {
MainService mainService;

public MainController(MainService mainService) {
this.mainService = mainService;
}

@GetMapping
public ResponseEntity getDashboardData() {
checkPermission();
List result = mainService.getData();
return ResponseEntity.ok().body(result);
}
}
Вот что у меня есть на данный момент с точки зрения модульного теста:

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

class MainControllerTest {
MainController mainController;

@Test
public void test_getDashboardData_shouldReturn200Response() {
MainService mainService = Mockito.mock(MainService.class);

mainController = new MainController(mainService);

List mockData = List.of(new MainDataDto());
when(mainService.getData()).thenReturn(mockData);

Assertions.assertEquals(HttpStatus.OK, mainController.getDashboardData().getStatusCode());
}
Когда я запускаю этот модульный тест, я получаю следующее исключение:

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

java.lang.NullPointerException: Cannot invoke "org.springframework.security.core.Authentication.getPrincipal()" because the return value of "org.springframework.security.core.context.SecurityContext.getAuthentication()" is null
Это исключение происходит из checkPermission, который является защищенным методом в классе RestControllerBase. Я не могу изменить модификатор доступа для этого метода.
Я новичок в написании модульных тестов, поэтому пытаюсь делать это понемногу, чтобы понять, что делаю. . Из-за исключения я хочу «выяснить, как поступить» с checkPermission и (с моим ограниченным пониманием) я думаю, что могу/должен каким-то образом высмеивать этот метод или что-то вроде передачи этой части моего метода контроллера закончено.
Поскольку этот метод защищен, как лучше всего изменить мой модульный тест, чтобы я больше не получал вышеуказанное исключение?

Подробнее здесь: https://stackoverflow.com/questions/787 ... code-in-it

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