Maison >développement back-end >Golang >Comment puis-je me moquer efficacement de la méthode http.Client Do pour les tests ?

Comment puis-je me moquer efficacement de la méthode http.Client Do pour les tests ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 10:39:11390parcourir

How Can I Effectively Mock the http.Client Do Method for Testing?

Se moquer de la méthode http.Client Do

Dans votre code, vous essayez de vous moquer de la méthode http.Client Do à des fins de test . Étant donné que l'interface HttpClient que vous avez définie ne nécessite qu'une fonction correspondant à la signature de Do, vous pouvez utiliser un objet fictif pour remplir cette exigence.

Envisagez de créer une structure ClientMock :

type ClientMock struct {}

Implémentez la Faites la méthode dans cette structure simulée comme suit :

func (c *ClientMock) Do(req *http.Request) (*http.Response, error) {
    return &http.Response{}, nil
}

Ce ClientMock simule efficacement le comportement de HttpClient en renvoyant un http.Response factice et aucune erreur.

Pour utiliser cet objet fictif, injectez une instance de ClientMock dans votre fonction GetOverview en tant que paramètre client. Cela vous permet de contrôler la réponse HTTP renvoyée par l'objet fictif, vous permettant ainsi de simuler différents scénarios pendant les tests.

Une approche alternative consiste à utiliser une bibliothèque simulée. Cependant, comme vous l'avez mentionné, de nombreuses bibliothèques ne fournissent pas explicitement de simulations pour la méthode Do. Vous pouvez envisager d'envelopper le http.Client dans un type personnalisé et de fournir une simulation pour ce type à la place.

En fin de compte, votre choix de stratégie de simulation dépend de vos exigences et préférences de test spécifiques.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn