Maison > développement back-end > C++ > Moq peut-il attribuer des valeurs aux paramètres Out ?

Moq peut-il attribuer des valeurs aux paramètres Out ?

DDD
Libérer: 2025-01-18 05:31:13
original
799 Les gens l'ont consulté

Can Moq Assign Values to Out Parameters?

Affectation des paramètres de sortie dans Moq

Question :

Moq peut-il être utilisé pour attribuer des valeurs aux paramètres de sortie ?

Réponse :

Oui, vous pouvez utiliser Moq 3.0 et supérieur pour attribuer des valeurs aux paramètres de sortie. Voici comment procéder :

Pour les paramètres de sortie :

public interface IService
{
    void DoSomething(out string a);
}

[TestMethod]
public void Test()
{
    var service = new Mock<IService>();
    string expectedValue = "value";
    service.Setup(s => s.DoSomething(out expectedValue));

    string actualValue;
    service.Object.DoSomething(out actualValue);
    Assert.AreEqual(expectedValue, actualValue);
}
Copier après la connexion

Moq enregistre la valeur attribuée à un paramètre de sortie lors de la configuration et renvoie cette valeur lors du test.

Pour les paramètres de référence :

Moq ne prend actuellement pas en charge cette fonctionnalité. Cependant, vous pouvez utiliser Rhino Mocks ou utiliser une action contrainte comme solution de contournement :

Utiliser une action contrainte :

public interface IService
{
    void DoSomething(ref string a);
}

[TestMethod]
public void Test()
{
    var service = new Mock<IService>();
    string value = "initial";

    service.Setup(s => s.DoSomething(ref It.Ref<string>.IsAny))
        .Callback<string>(s => s = "expectedValue");

    service.Object.DoSomething(ref value);
    Assert.AreEqual("expectedValue", value);
}
Copier après la connexion

Ici, nous utilisons la contrainte It.Ref<T>.IsAny pour faire correspondre n'importe quel paramètre de référence d'entrée et définir sa valeur dans le rappel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal