【发布时间】:2020-03-09 15:04:23
【问题描述】:
所以我有复杂的休息控制器,我想忽略实现,只关注授权方面。
@RestController
public class SettingsController {
private final Service1
private final Service2
private final Service3
private final Service4
@PreAuthorize("hasRole('ROLE_ADMIN')")
@GetMapping("settings")
ResponseEntity subgrups() {
//impl using a service1/service2/service3/service4
}
}
因为我只想测试授权,所以我正在寻找这样的测试:
@WebMvcTest(controllers = SettingsController.class)
public class SettingsControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
@WithMockUser(role="ADMIN")
public void whenSearchingForGroupAndHasAccessToPolicy() throws Exception {
mockMvc.perform(get("/settins"))
.andExpect(status().isOk());
}
}
但不幸的是,因为我有很多互动,我的测试看起来像
@WebMvcTest(controllers = SettingsController.class)
public class SettingsControllerTest {
//mock service1
//mock service2
//mock service3
//mock service4
@Autowired
private MockMvc mockMvc;
@Test
@WithMockUser(role="ADMIN")
public void whenSearchingForGroupAndHasAccessToPolicy() throws Exception {
//build some mock for service1
//mock interaction service1
//build some mock for service2
//mock interaction service2
//build some mock for service3
//mock interaction service3
//build some mock for service4
//mock interaction service4
mockMvc.perform(get("/settins"))
.andExpect(status().isOk());
}
}
有什么模式可以清理这个烂摊子吗?
【问题讨论】:
标签: spring spring-boot junit junit5