(BSR) feat(Jest): add the possibility to create empty mocks from types #7265
+161
−62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
L'un des principaux problèmes des mocks de test est qu'il faut souvent créer une fixture avec de la fausse donnée juste pour la structure.
Observation 1
Ils sont utilisés dans les tests de deux manières:
Pour une première conclusion, il faudrait faire en sorte que le test se suffise à lui même en terme de lisibilité, et ne soit pas dépendant de valeurs dans les fixtures
Observation 2
Sachant que le test ne doit pas se baser sur les valeurs écrites en dur dans les fixtures, les valeurs des fixtures deviennent inutiles
Le copier-coller de fixtures dans la codebase peut-être redondant et difficile à maintenir.
Il faudrait trouver un outil qui permette de créer un mock à partir d'un type, mais Typescript ne le permet pas directement.
Solution proposée
Le plugin
ts-auto-mock
le permet mais demande pas mal de config:ts-jest
doit être utilisé car babel-jest ne conserve pas le typage lors de la transpilation alors que cela est nécessaire pourts-auto-mock
afin de créer des objets à partir de types.ts-patch
doit être utilisé pour permettre au transformerts-auto-mock
d'effectuer correctement ses transformationsExemple
Limites
ts-jest
par rapport àbabel-jest
en terme de performances et d'efficacité