Assistants dans les tests Jutro
Le package @jutro/test fournit une fonctionnalité qui facilite la rédaction de tests Jutro.
Bibliothèque de tests
Jutro encapsule des utilitaires de bibliothèque de test pour que vous puissiez les importer directement à partir de @jutro/test. Cela inclut :
@testing-library/react
Vous pouvez les importer en tant que :
import { screen } from '@jutro/test';
import userEvent from '@testing-library/user-event';
Applications auxiliaires
rendu
import { render, screen } from '@jutro/test';
render(<MyComponent />);
expect(screen.getByRole('heading')).toBeInTheDocument();
Un wrapper Jutro autour du rendu de la bibliothèque de tests.
Vous pouvez fournir des options de rendu comme deuxième argument de render(). Les fournisseurs suivants sont affichés par défaut :
routerglobalizationmodalNextthemebreakpointTracker
Pour chaque fournisseur, vous pouvez :
- le remplacer par un autre fournisseur (doit être un fournisseur de contexte)
- transmettre des propriétés à un fournisseur existant
- désactiver un fournisseur
Par exemple :
render(<CurrencyInput {...currencyInputProps} />, {
providers: {
theme: {
disable: true,
},
router: {
provider: HashRouterContext.Provider,
},
globalization: {
props: {
defaultLocale: 'ja-JP',
},
},
},
});
React Strict Mode
Le mode React Strict est un composant React natif qui exécute des vérifications supplémentaires lorsqu'il est activé dans un environnement de développement, ce qui vous aide à trouver les bogues couramment rencontrés dans vos composants. Il offre les avantages suivants :
- Il vérifie toute utilisation d'API obsolètes par vos composants
- Il effectue un nouveau rendu de vos composants une fois de plus pour essayer de trouver les composants qui modifient involontairement leur comportement lorsqu'ils sont affichés une seconde fois
- Il réexécute un cycle de configuration et de nettoyage supplémentaire pour tous les effets de votre code
Pour activer le mode React Strict, dans votre fichier .env, ajoutez JUTRO_REACT_STRICT_MODE=true.
Le mode strict n'est pas activé par défaut pour les applications préexistantes, mais la variable d'environnement sera activée dans le fichier .env pour toutes les nouvelles applications Jutro créées à partir d'un modèle d'application Jutro.
translatorForTests
key: la forme du message à traduire, ou chaîneargs: un objet d'arguments transmis au message de localisation pour afficher des valeurs de variable
Si key est dans le format intlMessageShape, il ajoute Tx: à la valeur du champ defaultMessage.
Si key est une chaîne, elle renvoie la key.
translatorForTestsWithSuffix
Identique à translatorForTests, mais ajoute -translated à la fin de chaque message.
getTranslation
import { screen, getTranslation } from '@jutro/test';
const languageLabel = screen.getByText(
getTranslation({
id: 'my-app.widgets.SomeComponent.languageLabel',
defaultMessage: 'Language',
})
);
input: la forme du message à traduire, ou chaîneargs: un objet d'arguments transmis au message de localisation pour afficher des valeurs de variable
Si input est dans le format intlMessageShape, il renvoie la valeur formatée du champ defaultValue.
Si input est une chaîne, elle renvoie la chaîne.
flushPromises
Vous pouvez utiliser cette fonction pour attendre la fin des opérations asynchrones. Par exemple, dans une fonction de test async :
await flushPromises();
expect(everythingIsFineNow());
Dans la plupart des cas, cela n'est pas nécessaire. Avant d'utiliser flushPromises, essayez les méthodes suivantes à partir de la bibliothèque de tests :
convertToUTCObject
const year = convertToUTCObject(date).year;
Convertit un Date en un objet avec les champs suivants :
- Année
- Mois
- Jour
- Heure
- Minute
convertToUTCString
const utcSting = convertToUTCString(date);
Convertit un objet Date en une chaîne au format UTC qui contient l'année, le mois, le jour, l'heure et la minute.
convertToUTCDate
const properDate = convertToUTCDate(date);
Convertit un objet Date en un objet de date UTC.
getLocaleTestData
const testData = getLocaleTestData(category, options);
category: peut être « date », « numéro » ou « devise »options: un objet d'options :excludeValues: string[]
Renvoie les données de paramètres régionaux de la catégorie donnée pour chaque paramètre régional pris en charge.
Assertions
assertIsInput
const input = screen.getByRole('switch', { name: label });
assertIsInput(input);
Génère une erreur si input n'est pas une entrée HTML.
assertIsAnchor
const link = screen.getByRole('link');
assertIsAnchor(link);
Génère une erreur si link n'est pas un ancrage HTML.
assertIsLink
const link = screen.getByRole('link');
assertIsLink(link);
Génère une erreur si link n'est pas un lien HTML.
assertIsElement
const link = screen.getByRole('link');
assertIsElement(link);
Génère une erreur si link n'est pas un élément HTML.
assertIsNotNull
const titleContent = screen.getByRole('heading').textContent;
assertIsNotNull(titleContent);
Génère une erreur si titleContent est nul.