我正在测试我的春季MVC应用程序。要求是模拟SecurityContext
,但是我需要带有某些名称的Authentication
,而不是null。有什么方法可以做到吗?
这是我的代码:
Authentication auth = Mockito.mock(Authentication.class);
SecurityContext secCont = Mockito.mock(SecurityContext.class);
Mockito.when(secCont.getAuthentication()).thenReturn(auth);
SecurityContextHolder.setContext(secCont);
您在这里模拟了Spring的Authentication
对象:
Authentication auth = Mockito.mock(Authentication.class);
您已经告诉Spring的SecurityContextHolder
在这里存储此Authentication
对象:
Mockito.when(secCont.getAuthentication()).thenReturn(auth);
因此,如果您希望模拟的Authentication
对象返回"某些名称",则只需在> IT 上设置一些模拟期望即可。例如:
Mockito.when(auth.getName()).thenReturn("aName");
使用弹簧注释org.springframework.security.test.context.support.WithMockUser
@Test
@WithMockUser(username = "viewUser", authorities = { "view" })
public void mytest(){}