我正在尝试为一个控制器写一个单元测试。一些依赖项(比如一个服务类)我用@MockBean
来模拟。但是还有其他的依赖项我想让spring像往常一样创建bean。这可能吗?
@RunWith(SpringRunner.class)
@WebMvcTest(JwtAuthenticationController.class)
public class JwtControllerTests {
@MockBean
private JwtUserDetailsService jwtUserDetailsService;
@MockBean
private AuthenticationManager authenticationManager;
@ ? ? ?
private JwtTokenUtil jwtTokenUtil
public void auth_Success() throws Exception {
when(
jwtUserDetailsService.loadUserByUsername(anyString())
).thenReturn(adminUserDetails);
RequestBuilder request = MockMvcRequestBuilders
.post("/api/v1/authenticate")
.contentType(MediaType.APPLICATION_JSON)
.content(authBody);
}
}
控制器代码:
public class JwtAuthenticationController {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Autowired
private JwtUserDetailsService jwtUserDetailsService;
}
2条答案
按热度按时间x8diyxa71#
您有@WebMvcTest。
可用于仅关注Spring MVC组件的Spring MVC测试的注解。
您需要使用@SpringBootTest(classes = Application.class)并配置您的MockMvc。
将
JwtAuthenticationController
更改为接受构造函数的依赖项。sshcrbum2#
您可以@SpyBean