Maison >développement back-end >Golang >Comment puis-je simuler des fonctions importées dans Go pour des tests efficaces ?
Dans Go, tester une fonction qui s'appuie sur des fonctions importées à partir de packages externes peut être difficile. Prenons l'exemple suivant :
import x.y.z func abc() { ... v := z.SomeFunc() ... }
Pouvons-nous nous moquer de z.SomeFunc() dans Go ?
Oui, avec un modification simple du code. En introduisant une variable de type fonction zSomeFunc et en l'initialisant avec z.SomeFunc, le code du package peut appeler cette variable au lieu de z.SomeFunc(). Cela nous permet de nous moquer de la fonction importée pendant les tests.
var zSomeFunc = z.SomeFunc func abc() { ... v := zSomeFunc() ... }
Dans les tests, nous pouvons attribuer une fonction personnalisée à zSomeFunc qui se comporte comme nécessaire pour les tests.
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 }
En refactorisant le code, nous pouvons nous moquer des fonctions importées et tester plus efficacement leur impact sur notre code. Cette technique peut être particulièrement utile lors du test de dépendances tierces ou pour isoler des éléments spécifiques de fonctionnalités pour des tests ciblés.
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!