Testes Unitários com Mocks Usando Moq
Juarez Júnior
Posted on October 29, 2024
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
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);
}
}
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
Posted on October 29, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.