DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

Testes Unitários com Mocks Usando Moq

O Moq é uma biblioteca de mocking para .NET que facilita a criação de testes unitários ao permitir a simulação de comportamentos e dependências de classes. Ele é muito utilizado para criar “mocks” de interfaces ou objetos complexos, permitindo que você isole a lógica de negócio em seus testes. O Moq é simples de usar e ajuda a testar cenários que dependem de chamadas a serviços externos, bancos de dados ou APIs. Neste exemplo, vamos criar um teste unitário simulando o comportamento de uma interface usando o Moq.

Bibliotecas:

Para usar a biblioteca Moq, instale o seguinte pacote NuGet no seu projeto:

Install-Package Moq 
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using Moq; using System; using Xunit; // Interface que será mockada public interface ICalculadora { int Somar(int a, int b); } // Classe que utiliza a interface public class Operacoes { private readonly ICalculadora _calculadora; public Operacoes(ICalculadora calculadora) { _calculadora = calculadora; } public int ExecutarSoma(int a, int b) { return _calculadora.Somar(a, b); } } public class OperacoesTests { [Fact] public void ExecutarSoma_DeveRetornarSomaCorreta() { // Criando o mock da interface ICalculadora var mockCalculadora = new Mock<ICalculadora>(); // Definindo o comportamento esperado para o método Somar mockCalculadora.Setup(c => c.Somar(2, 3)).Returns(5); // Usando o mock na classe Operacoes var operacoes = new Operacoes(mockCalculadora.Object); var resultado = operacoes.ExecutarSoma(2, 3); // Verificando se o resultado é o esperado Assert.Equal(5, resultado); // Verificando se o método Somar foi chamado exatamente uma vez mockCalculadora.Verify(c => c.Somar(2, 3), Times.Once); } } 
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, criamos uma interface chamada ICalculadora com um método Somar. Em seguida, criamos a classe Operacoes, que utiliza essa interface. No teste unitário ExecutarSoma_DeveRetornarSomaCorreta, usamos o Moq para criar um “mock” da interface ICalculadora, definindo que, quando o método Somar for chamado com os parâmetros 2 e 3, ele deverá retornar 5. O teste verifica se o resultado é o esperado e se o método Somar foi chamado uma vez.

Conclusão:

O Moq é uma ferramenta poderosa para criar mocks e simplificar testes unitários. Ele permite simular comportamentos complexos, facilitando o isolamento da lógica de negócio e permitindo que os testes se concentrem nas funcionalidades principais sem depender de implementações reais.

Código fonte: GitHub

Top comments (0)