Este documento fornece uma introdução ao Moq, um framework para criar objetos mock em .NET. Resume os principais pontos sobre o que é um mock, por que usar o Moq, como usá-lo para testar argumentos, propriedades, comportamentos e realizar verificações. Inclui também exemplos hands-on e referências para aprender mais.
2. QUEM EU SOU?
INFRA EVOLUTION
Marcus Leandro
Infra Evolution @ Stone
E-mail: mleandro@stone.com.br
GitHub: https://github.com/mvleandro
Twitter: @mvleandro
Blog: https://mvleandro.wordpress.com/
LinkedIn: https://www.linkedin.com/in/mvleandro/
SUA
FOTO
(STONE)
3. • O que é um Mock?
• Por que utilizar o Moq?
• Restrições de uso do Moq
• Principais usos
• Hands-on
• Dúvidas
AGENDA
INFRA EVOLUTION
4. O que é um Mock?
INFRA EVOLUTION
Mock é um objeto criado para testar comportamento de outro
objeto real.
• Simula/finge ser o objeto real através de operações
controladas;
• Garante um retorno previsível e válido;
5. O que é um Mock?
INFRA EVOLUTION
A utilização de objeto Mock está relacionada com o uso em testes de unidade, e é indicada
quando temos os seguintes cenários:
• Os objetos chamam algum recurso externo como uma Api, por exemplo;
• Os objetos fornecem resultados não determinísticos;
• Os objetos possuem estados que não são fáceis de criar ou reproduzir;
• A utilização dos objetos é muito lenta;
• Os objetos ainda não existem ou podem mudar de comportamento;
• Para realizar os testes você teria que incluir informações e métodos exclusivos para os
objetos.
6. O que é um Mock?
INFRA EVOLUTION
Existem três tipos de objetos simulados:
1. Fakes – São objetos mais simples que implementam a mesma interface dos objetos que
representam e retornam respostas pré-configuradas;
2. Mocks – São objetos pré-programados com informações que formam uma especificação
da chamadas que esperam receber;
3. Stubs – Providenciam respostas pré-configuradas para as chamadas feitas durante os
testes, em geral não respondem a nada que não esteja programado para o teste.
Stubs são usados para representar e testar o estado de um objeto e os Mocks são usados para testar
suas interações.
7. Por que utilizar o Moq?
INFRA EVOLUTION
• Aumentar a qualidade do seu código;
• Simples de usar;
• Fortemente tipado;
• Minimalista (embora altamente funcional);
• Declaração de comportamento através de Linq expressions.
Moq é um framework para mocar objetos em C#.
8. Restrições de uso do Moq
INFRA EVOLUTION
• Interfaces;
• Classes abstratas;
• Métodos virtuais.
10. Principais usos – Argumentos
INFRA EVOLUTION
Primeiro instanciamos um novo mock
para a interface IFoo.
Agora configuramos o comportamento para cada chamada de cada um dos métodos.
11. Principais usos – Propriedades
INFRA EVOLUTION
Aqui definimos um valor de retorno para os Gets.
12. Principais usos – Verificação
INFRA EVOLUTION
Podemos verificar se um determinado método foi chamado.
13. Principais usos – Callbacks
INFRA EVOLUTION
Configurando callbacks para verificações e lógicas
posteriores.
14. Principais usos – Alterando o comportamento
default
INFRA EVOLUTION
Configurando o Moq como um Mock real, lançando exceções quando um
comportamento não for configurado.
O comportamento padrão é Loose,
retornando valores default, arrays vazias,
etc, quando não tiver sido configurado.
Chamando a implementação base quando um comportamento não for
configurado.
Neste caso, a chamada padrão da classe mocada
será invocada em vez de retornar os valores
default.