Monkey Patching dans Go : une solution pour tester le code hérité
Bien que le recours de Go aux interfaces simplifie la simulation, des situations peuvent survenir lorsque vous en avez besoin pour tester le code sans le modifier. Si le code n'est pas structuré pour utiliser des interfaces et est fortement interconnecté, les techniques de moquerie traditionnelles peuvent s'avérer difficiles.
Heureusement, Go propose une solution à ce problème : le patching de singe. Cette technique vous permet de modifier des objets au moment de l'exécution. Pour l'implémenter, créez une interface qui enveloppe la structure originale que vous souhaitez moquer :
type MyInterface interface { DoSomething(i int) error DoSomethingElse() ([]int, error) }
Ensuite, intégrez la structure originale dans votre structure Concrete et implémentez les méthodes de votre interface dans la structure Concrete :
type Concrete struct { *somepackage.Client } func (c *Concrete) DoSomething(i int) error { return c.client.DoSomething(i) } func (c *Concrete) DoSomethingElse() ([]int, error) { return c.client.DoSomethingElse() }
Ce code modifié vous permet de vous moquer du type Concrete de la même manière que vous vous moqueriez du type Client, fournissant une solution pour tester le code sans nécessiter de modifications de l'original. base de 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!