An Interest In:
Web News this Week
- April 28, 2024
- April 27, 2024
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To