SlideShare uma empresa Scribd logo
MOQ – Tips and Tricks
1º MeetUp – Asp.Net Rio
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)
• O que é um Mock?
• Por que utilizar o Moq?
• Restrições de uso do Moq
• Principais usos
• Hands-on
• Dúvidas
AGENDA
INFRA EVOLUTION
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;
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.
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.
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#.
Restrições de uso do Moq
INFRA EVOLUTION
• Interfaces;
• Classes abstratas;
• Métodos virtuais.
Principais usos
INFRA EVOLUTION
Começando
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.
Principais usos – Propriedades
INFRA EVOLUTION
Aqui definimos um valor de retorno para os Gets.
Principais usos – Verificação
INFRA EVOLUTION
Podemos verificar se um determinado método foi chamado.
Principais usos – Callbacks
INFRA EVOLUTION
Configurando callbacks para verificações e lógicas
posteriores.
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.
Hands on
INFRA EVOLUTION
https://github.com/mvleandro/moq-presentation
Dúvidas
INFRA EVOLUTION
?
Referências
INFRA EVOLUTION
https://github.com/Moq/moq4/wiki/Quickstart
http://www.macoratti.net/15/08/net_mock1.htm
OBRIGADO!
Marcus Leandro
mleandro@stone.com.br
https://enter.stone.com.br

Mais conteúdo relacionado

PDF
TDD com Python (Completo)
PDF
MoT-RJ: Identificando mudanças com snapshots teste - Ana Izabel
PPTX
Power mock
PDF
Padrões para Desenvolvimento de Software Guiado por Testes
PDF
POO2-Pre-32-PadroesProjetos_.pdf
PDF
Curso java 07 - exceções
PDF
Testando Aplicações Django: Quando, Como e Onde?
PPTX
Introdução a testes automatizados
TDD com Python (Completo)
MoT-RJ: Identificando mudanças com snapshots teste - Ana Izabel
Power mock
Padrões para Desenvolvimento de Software Guiado por Testes
POO2-Pre-32-PadroesProjetos_.pdf
Curso java 07 - exceções
Testando Aplicações Django: Quando, Como e Onde?
Introdução a testes automatizados

Mais procurados (20)

PDF
POO - 22 - Tratamento de Exceções em Java
PPTX
Tratamento de exceções em Java
PDF
Django Object factory
PPTX
Java virtual machine quantas linguas fala a jvm2
PPT
Testes Automatizados de Software
PPTX
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PDF
Testes: existe vida antes do TDD
PDF
TDD com Python
PDF
Mock it with mockito
PDF
Refatoração de Código Legado
PPTX
O Spring está morto! Viva o Spring!
PDF
PHPExperience 2016 - Pirâmide de Testes
PDF
Java não é tão difícil quanto parece
PPTX
Testes O que são e para que servem? - LadyTalks
PDF
JUnit Experience
PDF
Apresentação jasmine
PPTX
Testes e mocks: Em Visual Studio com .NET
PPTX
Automatizando seus testes com robot framework
PDF
Certificação Java: Exceções
PDF
[Curso Java Basico] Aula 17: Loop for
POO - 22 - Tratamento de Exceções em Java
Tratamento de exceções em Java
Django Object factory
Java virtual machine quantas linguas fala a jvm2
Testes Automatizados de Software
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
Testes: existe vida antes do TDD
TDD com Python
Mock it with mockito
Refatoração de Código Legado
O Spring está morto! Viva o Spring!
PHPExperience 2016 - Pirâmide de Testes
Java não é tão difícil quanto parece
Testes O que são e para que servem? - LadyTalks
JUnit Experience
Apresentação jasmine
Testes e mocks: Em Visual Studio com .NET
Automatizando seus testes com robot framework
Certificação Java: Exceções
[Curso Java Basico] Aula 17: Loop for
Anúncio

Último (7)

PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PPTX
Curso de Windows 11 resumido na prática.pptx
Dos requisitos ao código: como criar código rastreável em PHP
Evolução em código: algoritmos genéticos com PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Curso de Windows 11 resumido na prática.pptx
Anúncio

Moq - Tips and Tricks

  • 1. MOQ – Tips and Tricks 1º MeetUp – Asp.Net Rio
  • 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.