Requêtes personnalisées
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
DOM Testing Library expose de nombreuses fonctions utilitaires utilisées pour
implémenter les requêtes par défaut. Vous pouvez utiliser ces helpers pour créer
des requêtes personnalisées. Par exemple, le code ci-dessous montre comment
remplacer les requêtes testId par défaut pour utiliser un attribut data différent.
(Note : les fichiers de tests importeraient test-utils.js plutôt que d'utiliser
directement DOM Testing Library).
Note
Les requêtes personnalisées peuvent être ajoutées à la méthode
renderdeReact Testing Libraryen incluantqueriesdans l'objet de configuration options. Consultez les options de render.
Les requêtes personnalisées sont différentes des méthodes de rendu personnalisé.
const domTestingLib = require('@testing-library/dom')
const {queryHelpers} = domTestingLib
export const queryByTestId = queryHelpers.queryByAttribute.bind(
null,
'data-test-id',
)
export const queryAllByTestId = queryHelpers.queryAllByAttribute.bind(
null,
'data-test-id',
)
export function getAllByTestId(container, id, ...rest) {
const els = queryAllByTestId(container, id, ...rest)
if (!els.length) {
throw queryHelpers.getElementError(
`Unable to find an element by: [data-test-id="${id}"]`,
container,
)
}
return els
}
export function getByTestId(container, id, ...rest) {
// result >= 1
const result = getAllByTestId(container, id, ...rest)
if (result.length > 1) {
throw queryHelpers.getElementError(
`Found multiple elements with the [data-test-id="${id}"]`,
container,
)
}
return result[0]
}
// re-export with overrides
module.exports = {
...domTestingLib,
getByTestId,
getAllByTestId,
queryByTestId,
queryAllByTestId,
}
buildQueries
L'utilitaire buildQueries vous permet de créer des requêtes personnalisées avec toutes les
requêtes standard de testing-library.
Voir la section Ajouter des requêtes personnalisées du guide de rendu personnalisé pour des exemples d'utilisation.
Utiliser d'autres bibliothèques d'assertions
Si vous n'utilisez pas Jest, vous pourriez trouver un ensemble similaire d'assertions personnalisées pour votre bibliothèque préférée. Voici une liste d'alternatives à jest-dom pour d'autres bibliothèques d'assertions populaires :
Si vous connaissez d'autres alternatives, merci de soumettre une pull request pour les ajouter ici !
getNodeText
getNodeText(node: HTMLElement)
Retourne le contenu texte complet d'un élément HTML, en supprimant les espaces superflus. L'objectif est de traiter le texte dans les nœuds exactement comme il est perçu par les utilisateurs dans un navigateur, où les espaces supplémentaires au sein des mots dans le code HTML n'ont pas de signification lors du rendu du texte.
// <div>
// Hello
// World !
// </div>
const text = getNodeText(container.querySelector('div')) // "Hello World !"
Cette fonction est également utilisée en interne lors de la requête de nœuds par leur
contenu texte. Cela permet aux fonctions comme getByText et queryByText de
fonctionner comme prévu, en trouvant des éléments dans le DOM de la même manière
que le feraient les utilisateurs.
La fonction a un comportement spécial pour certains éléments d'entrée :
// <input type="submit" value="Send data" />
// <input type="button" value="Push me" />
const submitText = getNodeText(container.querySelector('input[type=submit]')) // "Send data"
const buttonText = getNodeText(container.querySelector('input[type=button]')) // "Push me"
These elements use the attribute `value` and display its value to the user.