Mockito цепочка вызовов методов - PullRequest
0 голосов
/ 07 февраля 2020
  @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);
  }

Я новичок в модульном тестировании. Пожалуйста, помогите мне в написании тестовых случаев для вышеприведенного метода покоя контроллера

Я пытался по тесту ниже, но он не работает

    @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());
    }

, когда я бегу выше теста, я получаю незавершенную заглушку, обнаруженную здесь ошибка

Я создал такой макет контроллера

    private ServiceA serviceA = Mockit.mock(ServiceA.class);
    private NodeClient client = Mockit.mock(NodeClient.class);
    private AgentController agentController = new Controller(serviceA, client);

1 Ответ

1 голос
/ 07 февраля 2020

Предположим, что где-то есть класс 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
    }

}
...