Maison >développement back-end >Golang >Comment simuler les appels de méthode Struct dans les tests Go sans utiliser d'interfaces ?

Comment simuler les appels de méthode Struct dans les tests Go sans utiliser d'interfaces ?

DDD
DDDoriginal
2024-12-08 00:09:12735parcourir

How to Mock Struct Method Calls in Go Tests Without Using Interfaces?

Appels de méthodes moqueuses de structures dans les cas de test Go sans interfaces

Dans Go, il n'y a pas d'équivalent direct aux frameworks comme Mockito et jMock pour appels de méthode moqueuse des structures. Cependant, plusieurs techniques peuvent être utilisées pour atteindre un niveau de simulation similaire sans introduire d'interfaces dans le code source.

Une approche consiste à créer une structure simulée qui implémente les mêmes méthodes que la structure d'origine. La structure fictive peut ensuite être injectée dans la fonction ou la méthode qui doit être testée, vous permettant de contrôler le comportement et de vérifier les appels.

Considérez l'exemple suivant :

type A struct {}

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

func invoke(s A, url string){
    out := s.perform(url)
    // ...
} 

Pour simulez l'appel de méthode de perform, vous pouvez créer une structure simulée AMock qui implémente la même interface que A.

type AMock struct {}

func (a *AMock) perform(url string) {
    // mocked implementation
}

Dans votre cas de test, vous pouvez injecter la simulation struct dans la fonction d'invocation et affirmer le comportement attendu.

Une autre approche consiste à utiliser un framework d'injection de dépendances comme testify/mock. Ce framework fournit un ensemble de méthodes d'extension qui vous permettent de simuler des interfaces et de vérifier leur utilisation dans vos cas de test.

import "github.com/stretchr/testify/mock"

type A struct {}

type AMock struct {
    mock.Mock
}

func (a *AMock) perform(url string){
    a.Called(url)
} 

func invoke(s *A, url string){
    // ...
} 

En utilisant le framework testify/mock, vous pouvez facilement créer des simulations, vérifier les appels de méthode, et définissez des attentes pour vos cas de test.

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