Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 17, 2023 01:25 pm GMT

Comment mocker le logger en Go?

S'occuper des tests unitaires est toujours quelque chose de trs important, mais aussi qui peut se rvler trs long et/ou complxe. Il arrive dans certaines situations qu'on se retrouve avec du code o la seule manire qu'on a de le vrifier si il a t appel est de regarder les logs. (Surtout en Go o a peut vite devenir la foire la saucisse, mais o malheureusement l'injection dynamique de mocks n'existe pas)

Donc aujourd'hui on va voir comment adapter votre code pour rsoudre ce problme et faciliter vos prochains tests unitaires.

Ajout d'une nouvelle variable

Pour faire simple, on va utiliser une technique dj connue dans les tests unitaires en Go pour rsoudre ce problme qui s'agit de crer une variable qui va contenir l'objet ou la fonction mocker.

Dans chaque package, vous pourrez alors crer un fichier log.go dans lequel vous allez ajouter le code suivant :

var logger = log.New(os.Stderr, "", log.LstdFlags)

Ensuite, vous n'aurez qu' l'utiliser avec logger.Println(...)

Mais d'o vient ce code?

Ce code vient juste de la dclaration de la variable std dans la librairie log. Techniquement, on ne fait juste que dupliquer cette variable afin d'tre capable de la modifier quand on en aura besoin.

Mock

Maintenant que vous avez ces variables de cres, il est bien plus simple de les mocker.

Pour ce faire, on va utiliser le code suivant

var (      buff bytes.Buffer      MockLogger = log.New(&buff, "", log.LstdFlags)  )

Comme vous le constatez la dclaration du mock est quasi identique la dclaration du logger. La seule diffrence tant que le mock utilise un buffer comme endroit o crire. Et cette diffrence est trs importante car c'est grce cela qu'on va tre capable ensuite de lire dans ce buffer pour voir quels logs ont t appels.

Du coup, dans vos tests unitaires, il faut dclarer la ligne suivante pour remplacer votre logger par le mock

logger = mocks.MockLogger

Et derrire, il ne vous restera qu' rcuprer le contenu des logs dans le buffer avec strings.Split(mocks.Buff.String(), "
")
pour tre capable d'effectuer vos dernires vrifications.

Comme vous pouvez le voir, le tout reste simple, mais permet normment de choses en plus qu'avant.

En tout cas j'espre que a vous aidera!


Original Link: https://dev.to/mxglt/comment-mocker-le-logger-en-go-2ebm

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To