@PostMapping("/node{id}/delete")
public ResponseEntity<CallbackResponse> delete(@RequestParam("eventId") String eventId, @RequestParam("id") String nodeId) throws ResourceNotFoundException {
serviceA.remove(eventId);
client.getServiceB().deleteById(nodeId);
return new ResponseEntity<>(new CallbackResponse(true), HttpStatus.OK);
}
我是单元测试新手。 请帮助我为上述休息 Controller 方法编写测试用例
我尝试了以下测试,但它不起作用
@Test
public void testDeleteAgent() throws Exception{
ServiceA serviceA = Mockito.mock(ServiceA.class);
NodeClient client = Mockito.mock(NodeClient.class);
Mockito.doNothing.when(serviceA).remove(Mockito.any());
Mockito.doNothing.when(client.getServiceB()).deleteById(Mockito.any());
ResponseEntity<CallbackResponse> result = agentController.delete("123", "456");
Assert.assertEquals(HttpStatus.OK.value(), result.getStatusCode());
}
当我运行上述测试时,我收到未完成的 stub 检测到错误
我像这样创建了模拟 Controller
private ServiceA serviceA = Mockit.mock(ServiceA.class);
private NodeClient client = Mockit.mock(NodeClient.class);
private AgentController agentController = new Controller(serviceA, client);
最佳答案
假设某个地方有一个 ServiceB
类,让我们尝试一下
public class AgentController{
@Inject
private Client client;
@PostMapping("/node{id}/delete")
public ResponseEntity<CallbackResponse> delete(@RequestParam("eventId") String eventId, @RequestParam("id") String nodeId) throws ResourceNotFoundException {
serviceA.remove(eventId);
client.getServiceB().deleteById(nodeId);
return new ResponseEntity<>(new CallbackResponse(true), HttpStatus.OK);
}
}
@RunWith(MockitoJUnitRunner.class)
public class AgentControllerTest{
@InjectMocks
private AgentController agentController;
@Mock
private Client client;
public void test(){
ServiceB serviceB = Mockito.mock(ServiceB.class);
Mockito.doReturn(serviceB).when(client).getServiceB();
Mockito.doNothing().when(serviceB).deleteById(Mockito.any());
// other here
}
}
关于java - Mockito 方法调用链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60110208/