Check/Test 如果 RedirectView 将重定向到特定 url

Check/Test if RedirectView will redirect to specific url

我有一个端点,我需要在其中检查用户是否已登录,如果不是,则重定向到登录页面。我正在抛出自定义异常,然后在其他 class 中使用异常处理程序,就像这样

@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 的获取,它是正确的,但我没有任何 UI 可以测试此逻辑是否确实会重定向到登录 url。我认为有可能使用 MockMvc 进行测试,但是我需要指定 url 并且 url 是从数据库中获取的,所以我不能只是硬编码 url

你用 MockMvc 做对了。您唯一缺少的是为 DomainService 注入模拟。

您可以拥有 DomainsService 接口并使用 @Profile 实现它以用于测试和生产。在您的测试中,您可以 return url 您的测试服务器和 verify 在您的测试中,端点被命中。

顺便说一句,我认为您 @ControllerAdvice 中遗漏了一些东西。 @ControllerAdvice(basePackageClasses = MyRestController.class)