如何解决使用addFilters = false来模拟@AuthenticationPrincipal MockMvc
我正在使用MockMvc为Rest应用程序中的控制器编写单元测试。
我在休息点以下进行测试时面临挑战-
@GetMapping("/details")
public ResponseEntity<UserDetails> getUserDetails(@AuthenticationPrincipal UserDetails userDetails)
{
return ResponseEntity.ok(userDetails);
}
如您所见,我需要模拟@AuthenticationPrincipal
来测试该剩余端点Point单元
现在的挑战是我正在使用的单元测试类具有以下框架:
public class ControllerTest extends BaseControllerTest{
}
和 BaseControllerTest 是:
@WebMvcTest
@ContextConfiguration(
classes = {
TestClass1.class,TestClass2.class,})
@AutoConfigureMockMvc(addFilters = false)//here is a problem
@TestExecutionListeners(MockitoTestExecutionListener.class)
@ActiveProfiles("test")
public class BaseControllerTest extends AbstractTestNGSpringContextTests {
}
因此,您可以看到所有过滤器均已禁用,因为我们是addFilters = false.
当我使用Eclipse调试单元测试时,我看到未在安全链中添加任何弹簧安全过滤器,为addFilters = true
我在公共论坛上进行了大量搜索,似乎使用了@WithUserDetails
和@WithMockUser
之类的注释,可以实现此目的。
但是这些都不起作用,因为幕后没有弹簧安全性
有人可以在这里帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。