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