vendredi 28 février 2025

Moq

Moq — une librairie très populaire en C# pour mocker des objets dans les tests unitaires, souvent utilisée avec xUnit ou NUnit.


🔹 C'est quoi Moq ?

Moq permet de simuler (ou "faker") le comportement d'objets ou de dépendances (par exemple des interfaces) dans les tests unitaires. Très utile pour l'injection de dépendances ou pour tester du code sans avoir à exécuter toute la logique réelle derrière.


🔹 Exemple simple : mocker une interface

👇 Interface à mocker

public interface IUtilisateurService
{
    string GetNomUtilisateur(int id);
}

👇 Classe qui dépend de cette interface

public class AccueilController
{
    private readonly IUtilisateurService _service;

    public AccueilController(IUtilisateurService service)
    {
        _service = service;
    }

    public string AfficherNom(int id)
    {
        return _service.GetNomUtilisateur(id);
    }
}

👇 Test avec Moq

using Moq;
using Xunit;

public class AccueilControllerTests
{
    [Fact]
    public void AfficherNom_RetourneNomCorrect()
    {
        // Arrange
        var mockService = new Mock<IUtilisateurService>();
        mockService.Setup(s => s.GetNomUtilisateur(1)).Returns("Alice");

        var controller = new AccueilController(mockService.Object);

        // Act
        var resultat = controller.AfficherNom(1);

        // Assert
        Assert.Equal("Alice", resultat);
    }
}

🔹 Principales fonctions de Moq

Méthode Moq Description
Setup() Définit un comportement attendu.
Returns() Spécifie la valeur à retourner.
Verify() Vérifie qu'une méthode a été appelée.
It.IsAny<T>() Paramètre quelconque (utile avec Setup ou Verify).
mock.Object Accès à l’objet mocké à passer à ta classe testée.

🔹 Exemple de Verify()

mockService.Verify(s => s.GetNomUtilisateur(It.IsAny<int>()), Times.Once);

🔧 Installation de Moq

Tu peux l’ajouter via NuGet :

dotnet add package Moq

Ou dans Visual Studio > Gestionnaire de packages NuGet.



Aucun commentaire:

Enregistrer un commentaire

Moq Lượt xem: