Zombar
Mocks são os objetos que armazenam chamadas de método. É conhecido como wrappers dinâmicos para dependências usadas nos testes. É usado para registrar e verificar a interação entre as classes Java. Uma simulação é conhecida como a versão mais poderosa e flexível das duplas de teste. Usamos um método para zombar chamado zombar() .
A principal função do uso de mocks é fornecer controle total sobre o comportamento dos objetos simulados. Os objetos simulados são geralmente usados para verificação de comportamento . O termo comportamento significa verificar os métodos e caminhos corretos aplicados aos objetos.
As simulações são criadas principalmente usando uma biblioteca ou estrutura de simulação como Mockito, JMock e EasyMock. É usado para testar um grande conjunto de testes onde os stubs não são suficientes. Uma das funções essenciais do mock é verificar quantas vezes um determinado método é chamado.
O trecho de código a seguir mostra como usar mock().
ToDoService doService = mock(ToDoService.class);
Esboço
Stubs são os objetos que contêm dados predefinidos e os utilizam para fornecer respostas durante os testes. Em outras palavras, um stub é um objeto que se assemelha a um objeto real com o número mínimo de métodos necessários para um teste. Stubs são usados quando não queremos usar objetos que dariam uma resposta com dados reais. Um stub é chamado de versão mais leve e mais estática do teste.
As principais funções dos stubs são:
- Ele sempre retorna a saída predefinida, independentemente da entrada.
- Ele pode ser usado para se assemelhar aos objetos do banco de dados.
- Stubs são usados para reduzir as complexidades que ocorrem durante a criação dos objetos reais. Eles são usados principalmente para realizar verificação de estado .
Espião
Os espiões são conhecidos como objetos parcialmente simulados . Isso significa que o espião cria um objeto parcial ou meio manequim do objeto real, stubando ou espionando os reais. Na espionagem, o objeto real permanece inalterado e apenas espionamos alguns métodos específicos dele. Em outras palavras, pegamos o objeto existente (real) e substituir ou espião apenas alguns de seus métodos.
Spies são úteis quando temos uma classe enorme cheia de métodos e queremos zombar de certos métodos. Neste cenário, devemos preferir usar espiões em vez de simulações e stubs. Ele chama o comportamento real do método, se os métodos não estiverem em stub.
No Mockito, o método spy() é usado para criar objetos espiões. Isso nos permite chamar os métodos normais do objeto real. O trecho de código a seguir mostra como usar o método spy().
List spyArrayList = spy(ArrayList.class);
Diferença entre Stub e Mock
Parâmetros | Esboço | Zombar |
---|---|---|
Fonte de dados | A fonte de dados dos stubs é codificada permanentemente. Geralmente está fortemente acoplado ao conjunto de testes. | Os dados nas simulações são configurados pelos testes. |
Criado por | Os stubs geralmente são manuscritos e alguns são gerados por ferramentas. | Os mocks geralmente são criados usando bibliotecas de terceiros, como Mockito, JMock e WireMock. |
Uso | Stubs são usados principalmente para conjuntos de testes simples. | Mocks são usados principalmente para grandes conjuntos de testes. |
Interface gráfica do usuário (GUI) | Os stubs não possuem uma GUI. | As simulações têm uma GUI. |
A seguir estão algumas diferenças entre o mock e o espião:
Parâmetros | Zombar | Espião |
---|---|---|
Uso | Mocks são usados para criar objetos totalmente simulados ou fictícios. É usado principalmente em grandes suítes de testes. | Spies são usados para criar objetos parciais ou meio simulados. Assim como o mock, os espiões também são usados em grandes conjuntos de testes. |
Comportamento padrão | Ao usar objetos simulados, o comportamento padrão dos métodos (quando não estão em stub) é não fazer nada (não executar nada). | Ao usar objetos espiões, o comportamento padrão dos métodos (quando não estão em stub) é o comportamento real do método. |
Em nossos tutoriais anteriores, discutimos alguns exemplos de stub, zombaria e espionagem. Para entender melhor a diferença entre stubbing, zombaria e espionagem, veja os exemplos.
encadeamento direto