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() ... }
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() ... }
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 }
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!