Questão nº 49
Questão de Tecnologia da Informação · FCC TRT4 2022 (nº 49)
Utilizando o Mockito, um Analista verificou que uma das anotações que podia utilizar era criar uma instância de uma classe que se pode "mockar" ou chamar os métodos reais a qual permite que se verifique se um método chama outros métodos. Bastante útil ao tentar colocar o código legado em teste. É uma alternativa ao uso do @InjectMocks, quando é preciso "mockar" métodos da própria classe que está sendo testada.
Trata-se de
- A@When
- B@Verify
- C@Matchers
- D@Spy (alternativa correta)
- E@Mock
Resposta comentada
Gabarito Alternativa D
O @Spy no Mockito permite que você crie uma versão "monitorada" de um objeto real. Isso significa que, por padrão, ele executa os métodos reais da classe, mas você pode escolher "mockar" (substituir o comportamento) de métodos específicos desse mesmo objeto, o que é ótimo para testar partes de um código existente sem reescrevê-lo.
- (A) Incorreta:
@Whené uma parte da sintaxe do Mockito (when(...).thenReturn(...)) usada para definir o comportamento de um mock ou spy, não uma anotação para criar uma instância. - (B) Incorreta:
@Verifyé uma parte da sintaxe do Mockito (verify(...)) usada para checar se um método foi chamado em um mock ou spy, não uma anotação para criar uma instância. - (C) Incorreta:
@Matchersrefere-se aos argument matchers do Mockito (comoanyString(),eq()), que são usados dentro dewhen()ouverify(), não uma anotação para criar uma instância. - (D) Correta:
@Spy(ouMockito.spy()) cria uma instância real de uma classe, permitindo que seus métodos reais sejam chamados. No entanto, você pode "espiar" e substituir o comportamento de métodos específicos dessa mesma instância, o que se encaixa perfeitamente na descrição de "criar uma instância de uma classe que se pode 'mockar' ou chamar os métodos reais a qual permite que se verifique se um método chama outros métodos" e "mockar métodos da própria classe que está sendo testada". - (E) Incorreta:
@Mock(ouMockito.mock()) cria uma instância falsa de uma classe, onde todos os métodos, por padrão, não fazem nada e retornam valores padrão (comonullou0). Para que um método faça algo, você precisa explicitamente definir seu comportamento. A armadilha aqui é que@Mocké muito comum, mas a questão especifica a capacidade de "chamar os métodos reais", o que não é o comportamento padrão de um@Mock, mas sim de um@Spy.
Fonte: FCC TRT4 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.