Maison > développement back-end > Golang > Comment simuler des appels de méthode Struct dans Go sans interfaces ?

Comment simuler des appels de méthode Struct dans Go sans interfaces ?

DDD
Libérer: 2024-12-13 13:13:09
original
123 Les gens l'ont consulté

How to Mock Struct Method Calls in Go without Interfaces?

Se moquer des appels de méthode de structure dans Go

Dans Go, se moquer des appels de méthode d'une structure sans introduire d'interfaces peut être réalisé grâce à une technique connue sous le nom de le motif "double". Voici comment le mettre en œuvre :

1. Créez une interface Performer :

Définissez une interface qui encapsule la méthode que vous souhaitez moquer.

type Performer interface {
    perform()
}
Copier après la connexion

2. Implémentez l'interface avec des simulations et une implémentation réelle :

Créez deux structures, une pour l'implémentation réelle (A) et une autre pour la simulation (AMock) qui implémentent toutes deux l'interface Performer.

type A struct{}

func (a *A) perform() {
    fmt.Println("real method")
}

type AMock struct{}

func (a *AMock) perform() {
    fmt.Println("mocked method")
}
Copier après la connexion

3. Utilisez l'injection de dépendances :

Dans votre fonction Invocation(), utilisez l'injection de dépendances pour transmettre l'interface Performer, plutôt que d'accéder directement à une variable globale.

func invoke(p Performer) {
    p.perform()
}
Copier après la connexion

4 . Injecter des simulations dans les tests :

Dans vos cas de test, injectez l'instance AMock dans la fonction Invocation(). Cela vous permettra de simuler le comportement de la méthode simulée.

// Create a mock performer
m := &AMock{}

// Inject the mock into invoke
invoke(m)
Copier après la connexion

5. Vérifier les appels simulés (facultatif) :

Si vous utilisez une bibliothèque moqueuse comme testify/mock, vous pouvez vérifier en outre que la méthode simulée a été appelée avec les arguments et la fréquence attendus.

// Assert that the mocked method was called
mock.AssertCalled(t, "perform", "argument1", "argument2")
Copier après la connexion

En utilisant le double modèle, vous pouvez efficacement simuler les appels de méthode d'une structure dans Go, offrant ainsi la flexibilité et l'isolation nécessaires pour des tests approfondis.

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