Maison > développement back-end > Golang > Comment puis-je simuler les fonctions d'un package importé dans Go pour des tests efficaces ?

Comment puis-je simuler les fonctions d'un package importé dans Go pour des tests efficaces ?

Linda Hamilton
Libérer: 2024-12-18 09:41:10
original
318 Les gens l'ont consulté

How Can I Mock Imported Package Functions in Go for Effective Testing?

Fonctions moqueuses importées à partir de packages dans Go

Lors du test des méthodes Go qui utilisent des fonctions importées à partir de packages externes, il peut être nécessaire de se moquer de ces fonctions externes pour des tests efficaces. Une approche consiste à refactoriser le code et à introduire un appel de fonction intermédiaire au lieu d'appeler directement la fonction externe.

Dans l'exemple fourni :

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}
Copier après la connexion

Créez une nouvelle variable zSomeFunc de type func et initialisez-le avec la fonction externe z.SomeFunc. Ensuite, demandez à votre package d'appeler zSomeFunc au lieu de z.SomeFunc.

var zSomeFunc = z.SomeFunc

func abc() {
    // ...
    v := zSomeFunc()
    // ...
}
Copier après la connexion

Maintenant, dans vos tests, vous pouvez attribuer une fonction différente à zSomeFunc, celle qui est définie dans le test et renvoie une valeur prédéfinie ou effectue des actions spécifiques. Cela vous permet de vous moquer du comportement de la fonction externe à des fins de test.

func TestAbc(t *testing.T) {
    // Save the original function and restore it at the end of the test.
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // Do whatever you want to do and return whatever value you need.
        return 1
    }

    // Call the tested function.
    abc()

    // Test the expected behavior.
}
Copier après la connexion

Vous pouvez également créer une implémentation simulée du package x.y.z et utiliser le Go Mocking Framework pour vous moquer spécifiquement de la fonction SomeFunc(). .

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
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