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