我想在Mockito中模拟静态方法。
据我所知这是not possible,我该如何解决这个问题呢? powermock不是一个选择。
我希望我的身份验证变量不会为空。
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
我读了一个答案here,但我不知道如何将这个答案放到代码中。 有人可以给出解决方案吗?
答案 0 :(得分:1)
正如您所指出的,使用Mockito模拟静态方法是不可能的,因为您不想使用Powermock或其他工具,您可以在测试中尝试以下内容。
创建测试认证对象
Authentication auth = new ... // create instance based on your needs and with required attributes or just mock it if you do not care
模拟安全上下文
SecurityContext context = mock(SecurityContext.class);
确保您的模拟返回相应的身份验证
when(context.getAuthentication()).thenReturn(auth);
将安全上下文设置为holder
SecurityContextHolder.setContext(securityContext);
现在每次调用SecurityContextHolder.getContext().getAuthentication()
都应该返回在步骤1中创建的身份验证对象。