Maison > développement back-end > C++ > Comment puis-je simuler efficacement les méthodes d'extension avec Moq ?

Comment puis-je simuler efficacement les méthodes d'extension avec Moq ?

Barbara Streisand
Libérer: 2025-01-20 02:07:14
original
902 Les gens l'ont consulté

How Can I Mock Extension Methods Effectively with Moq?

Méthodes d'extension moqueuses utilisant Moq : une alternative

Lorsque vous testez du code qui repose sur des méthodes d'extension, il est essentiel de maintenir la stabilité des tests contre d'éventuelles défaillances futures de ces méthodes. Bien que la fonctionnalité de Moq ne s'étende pas directement au remplacement des méthodes statiques, il existe une solution de contournement.

Méthodes alternatives

Les méthodes d'extension sont des méthodes statiques par nature et ne peuvent pas être simulées directement par Moq. Au lieu de cela, vous pouvez isoler l’implémentation d’une méthode d’extension en exploitant une classe concrète et ses méthodes statiques.

Considérons l'exemple suivant :

<code class="language-c#">public static class ExtensionClass
{
    public static int GetValue(this SomeType obj) => obj.Id;
}

public class SomeType
{
    public int Id { get; set; }
}</code>
Copier après la connexion

Mise en œuvre des tests

Pour créer un mock qui n'appelle pas de méthode d'extension, référencez directement la classe statique :

<code class="language-c#">var concreteClassMock = new Mock<ExtensionClass>();
concreteClassMock.Setup(c => c.GetValue(It.IsAny<SomeType>())).Returns(5);</code>
Copier après la connexion

En ciblant les méthodes statiques d'une classe concrète, vous pouvez simuler efficacement le comportement d'une méthode d'extension sans vous appuyer directement sur la méthode d'extension elle-même. Cela garantit que les échecs de test proviennent uniquement de la classe testée et non d'éventuels échecs futurs de la méthode d'extension.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal