Maison > développement back-end > Golang > Comment puis-je simuler des fonctions importées dans Go pour des tests unitaires efficaces ?

Comment puis-je simuler des fonctions importées dans Go pour des tests unitaires efficaces ?

Linda Hamilton
Libérer: 2024-12-29 20:51:13
original
972 Les gens l'ont consulté

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

Se moquer des fonctions importées dans les méthodes dépendantes des packages

Lors de l'écriture de tests pour des méthodes qui s'appuient sur des fonctions importées à partir de packages externes, la simulation peut devenir nécessaire pour isoler le test de l'implémentation réelle de la fonction importée. Dans Go, cela peut être réalisé avec une simple refactorisation.

Considérez la méthode suivante qui importe et utilise une fonction du package x.y.z :

import x.y.z

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

Pour se moquer de SomeFunc(), créez un variable zSomeFunc de type fonction, initialisée avec la fonction importée :

var zSomeFunc = z.SomeFunc

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

Dans les tests, vous pouvez attribuer une fonction différente à zSomeFunc, défini dans la suite de tests elle-même, pour manipuler le comportement comme vous le souhaitez :

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

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}
Copier après la connexion

Cette approche vous permet de simuler des fonctions importées d'autres packages et de contrôler leur comportement pendant les tests, facilitant ainsi l'isolement et la vérification des votre code.

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