Проверить / проверить, будет ли RedirectView перенаправлять на указанный c URL - PullRequest
1 голос
/ 12 февраля 2020

У меня есть конечная точка, где мне нужно проверить, вошел ли пользователь в систему, и если это не так, перенаправить на страницу входа. Я выбрасываю пользовательское исключение, и после этого с помощью обработчика исключений в другом классе, как этот

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    private final DomainsService domainsService;

    @ExceptionHandler(value = {UserNotLoggedInException.class})
    protected RedirectView handleUserNotLoggedException() {
        String defaultDomainName = domainsService.getDefaultDomainName();
        String loginUrl = "https://" + defaultDomainName + "/login.php";
        return new RedirectView(loginUrl);
    }

} 

Я могу проверить выборку loginUrl, и это правильно, но у меня нет никакого пользовательского интерфейса, где я могу проверить, если этот лог c действительно перенаправит на URL логина. Я думаю, что есть возможность протестировать с Mock Mvc, но тогда мне нужно указать URL-адрес и URL-адрес извлекается из базы данных, поэтому я не могу просто жестко закодировать URL-адрес

1 Ответ

1 голос
/ 12 февраля 2020

Вы правильно поняли с Mock Mvc. Единственное, чего вам не хватает, это внедрить макет для DomainService.

Вы можете иметь DomainsService интерфейс и реализовать его для тестирования и для использования @Profile. В вашем тесте вы можете вернуть URL вашего тестового сервера и verify в вашем тесте, что конечная точка поражена.

Также, кстати, я думаю, что вы что-то упустили в своем @ControllerAdvice. @ControllerAdvice(basePackageClasses = MyRestController.class)

...