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

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