Mocking Test em .NET 7: exemplo utilizando Moq, xUnit e Fluent Assertions
Neste post apresento um exemplo de uso de Mock Objects em .NET 7, tomando como base um projeto criado originalmente em versões anteriores do .NET e detalhado em um artigo publicado há algum tempo aqui no blog:
Testes de Software com .NET 5: exemplos de utilização
A implementação em questão utilizou o Moq como alternativa para a manipulação de Mock Objects, além de se basear no xUnit e empregar ainda o framework Fluent Assertions. Já disponibilizei inclusive este exemplo no GitHub:
https://github.com/renatogroffe/DotNet7-Moq-xUnit-FluentAssertions_AnaliseCredito
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!
Partindo da interface IServicoConsultaCredito:
E do enum StatusConsultaCredito e da classe Pendencia, construções utilizadas pela interface IServicoConsultaCredito:
Teremos o uso dessas estruturas pela classe AnaliseCredito:
E como poderíamos então gerar um objeto por meio da interface IServicoConsultaCredito, sem que contemos com uma implementação da mesma?
A resposta está no uso da classe genérica Mock (namespace Moq), disponibilizada pelo Moq para a criação de Mock Objects. A listagem seguinte exemplifica tudo isso, com a configuração de mapeamentos no construtor do tipo TestesAnaliseCredito e o uso de um Mock Object simulando as condições possíveis a serem tratadas por AnaliseCredito:
Esse exemplo foi apresentado em detalhes em uma live recente no Microsoft Reactor, com o conteúdo podendo ser assistido gratuitamente no YouTube: