有没有办法我可以为控制器类编写一些负面的测试案例
@RestController
@RequestMapping(value = "/health")
@Api(value = "EVerify Health check API", description = "Health check API")
public class HealthStatusController {
@Autowired
@Qualifier("implementation")
private HealthStatus healthStatus;
@RequestMapping(value = "", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
@ApiOperation(value = "Get the health status of the API", response = ResponseEntity.class)
public @ResponseBody
ResponseEntity getHealth() {
Integer status = healthStatus.healthCheck();
if (status == 200)
return ResponseEntity.status(HttpStatus.OK).build();
else
return ResponseEntity.status(HttpStatus.ACCEPTED).build();
}
}
我写了一个积极的测试案例,如下所示
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HealthStatusControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
@Qualifier("implementation")
private HealthStatus healthStatus;
@InjectMocks
private HealthStatusController healthStatusController;
@Rule public ExpectedException exception = ExpectedException.none();
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(healthStatusController).build();
}
@Test
public void getHealthCheckReturns200Test() throws Exception {
exception.expect(Exception.class);
Mockito.when(healthStatus.healthCheck()).thenReturn(200);
mockMvc.perform(get("/health")).andExpect(status().isOk()).andReturn();
}
}
感谢您的帮助。
答案 0 :(得分:0)
您可以模拟具有不同状态的HealthStatus
Mockito.when(healthStatus.healthCheck()).thenReturn(500);
mockMvc.perform(get("/health")).andExpect(status().is(500)).andReturn();
您可能需要添加一个@Spy
@Spy
@Autowired
@Qualifier("implementation")
private HealthStatus healthStatus;