Maison >développement back-end >Golang >Comment puis-je simuler des appels de méthode Struct dans des cas de test Go ?

Comment puis-je simuler des appels de méthode Struct dans des cas de test Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 07:09:17899parcourir

How Can I Mock Struct Method Calls in Go Test Cases?

Appels de méthode moqueuse de structures dans les cas de test Go

Dans Go, il n'y a pas de support natif pour les appels de méthode moqueuse de structures. Cependant, plusieurs techniques peuvent être utilisées pour obtenir des fonctionnalités similaires.

Une approche consiste à définir une interface représentant les méthodes pertinentes de la structure et à créer une implémentation fictive de cette interface. Cette implémentation fictive peut ensuite être injectée dans le scénario de test à la place de la structure réelle.

Considérez l'exemple de code suivant :

type A struct {}

func (a *A) perform(url string){
    // ...
}

Pour tester la fonction Invocation() qui utilise cette exécution (), une implémentation simulée de la structure A peut être créée :

type AMock struct {
    PerformFunc func(url string)
}

func (m *AMock) perform(url string) {
    if m.PerformFunc != nil {
        m.PerformFunc(url)
    }
}

Dans le cas de test, la simulation peut être injectée dans la méthode Invocation(). function :

func TestInvoke(t *testing.T) {
    mock := &AMock{}
    mock.PerformFunc = func(url string) {
        // Test logic for mock behavior
    }
    invoke(mock, "example.com")
}

En définissant le champ PerformFunc sur le mock, le comportement de la méthode simulée peut être contrôlé et affirmé dans le test.

Une autre approche du mocking consiste à utiliser une injection de dépendance cadre qui prend en charge la moquerie. Cela permet des capacités de simulation plus flexibles et polyvalentes, mais nécessite une configuration et une configuration supplémentaires.

En fin de compte, la méthode de simulation la plus appropriée dépend des exigences et des contraintes spécifiques du scénario de test et de l'application en cours de développement.

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