检查/测试重定向视图是否会重定向到特定网址



>我有端点,我需要检查用户是否已登录,如果不是这种情况,则重定向到登录页面。我正在抛出自定义异常,然后在其他类中使用异常处理程序,如下所示

@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);
}
} 

我能够测试登录 URL 的获取并且是正确的,但我没有任何 UI 可以测试此逻辑是否确实会重定向到登录 URL。我认为有可能使用 MockMvc 进行测试,但随后我需要指定 url 并且 url 是从数据库中获取的,所以我不能只对 url 进行硬编码

你用 MockMvc 做对了。您唯一缺少的就是为域名服务注入模拟。

您可以DomainsService一个接口,并使用@Profile实现它进行测试和生产。在测试中,可以返回测试服务器的 url,并在测试中verify终结点是否命中。

另外顺便说一句,我认为您的@ControllerAdvice中缺少一些东西.@ControllerAdvice(basePackageClasses = MyRestController.class)

最新更新