Se moquer des fonctions externes dans Go
Lorsque vous testez des fonctions qui reposent sur des packages externes, se moquer de ces fonctions externes peut être essentiel pour créer des fonctions isolées et fiables. essais. Prenons l'exemple suivant :
import x.y.z func abc() { ... v := z.SomeFunc() ... }
Pouvons-nous nous moquer de z.SomeFunc() pour tester unitairement abc() ?
Solution : refactorisation et moquerie
Oui, se moquer de z.SomeFunc() est possible avec une simple refactorisation. Introduisez une variable zSomeFunc de type fonction et initialisez-la avec z.SomeFunc. Ensuite, dans votre fonction qui appelle z.SomeFunc(), invoquez plutôt zSomeFunc() :
var zSomeFunc = z.SomeFunc func abc() { // ... v := zSomeFunc() // ... }
Pendant les tests, attribuez une fonction personnalisée à zSomeFunc qui renvoie le comportement de test souhaité. Par exemple :
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 }
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!