我尝试对控制器中的方法进行虚拟测试,但不起作用,我有一个空指针异常,我想知道为什么它不起作用,我精确地说这是我第一次这种测试。
这是我的休息控制器:
@RestController
@RequestMapping("/api")
public class AdminController {
@Autowired
private UserService userService;
@Secured(value = "ROLE_ADMIN")
@GetMapping("/roles")
public ResponseEntity<List<Role>> getRoles(){
return new ResponseEntity(userService.getRoles(), HttpStatus.OK);
}
这是我的控制器测试:
@RunWith(SpringRunner.class)
@WebMvcTest(value = AdminController.class, secure = false)
public class AdminControllerTest {
private MockMvc mvc;
@MockBean
UserService userService;
@Test
public void getRoles() throws Exception{
Role role=new Role("Admin");
List<Role> roles=Arrays.asList(role);
given(userService.getRoles()).willReturn(roles);
mvc.perform(get("/api/roles")).andExpect(status().isOk());
}
当我为此方法运行测试时,我遇到了这样的错误:
预先感谢您的帮助
答案 0 :(得分:1)
尝试一下。它应该工作。我认为您错过了@Autowired
注解
@RunWith(SpringRunner.class)
@WebMvcTest(value = AdminController.class, secure = false)
public class AdminControllerTest {
@Autowired
private MockMvc mvc;
@MockBean
UserService userService;
@Test
public void getRoles() throws Exception{
Role role=new Role("Admin");
List<Role> roles=Arrays.asList(role);
given(userService.getRoles()).willReturn(roles);
mvc.perform(get("/api/roles")).andExpect(status().isOk());
}
}