Как написать модульный тест с методом контроллера, в котором есть защищенный код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
Ответить

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

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

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

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

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