196 votes

Comment tester la non-existence d'un élément en utilisant jest et react-testing-library ?

J'ai une bibliothèque de composants pour laquelle j'écris des tests unitaires en utilisant Jest et react-testing-library. Sur la base de certains props ou événements, je veux vérifier que certains éléments ne sont pas rendus.

getByText , getByTestId etc. et une erreur dans react-testing-library si l'élément n'est pas trouvé, ce qui fait que le test échoue avant que l'élément ne soit trouvé. expect la fonction se déclenche.

Comment tester quelque chose qui n'existe pas dans jest en utilisant react-testing-library ?

2voto

matrixb0ss Points 25

Cela a fonctionné pour moi (si vous voulez utiliser getByTestId) :

expect(() => getByTestId('time-label')).toThrow()

2voto

Andy Rich Points 43

Vous pouvez utiliser react-native-testing-library "getAllByType" et ensuite vérifier si le composant est nul. Cette méthode présente l'avantage de ne pas avoir à définir TestID et devrait également fonctionner avec des composants tiers.

 it('should contain Customer component', () => {
    const component = render(<Details/>);
    const customerComponent = component.getAllByType(Customer);
    expect(customerComponent).not.toBeNull();
  });

0 votes

Cela va à l'encontre du principe de ne pas avoir de détails de mise en œuvre (comme le nom du composant) dans le test.

1voto

Bassem Points 1678

Autre solution : vous pouvez également utiliser un try/catch bloc

expect.assertions(1)
try {
    // if the element is found, the following expect will fail the test
    expect(getByTestId('your-test-id')).not.toBeVisible();
} catch (error) {
    // otherwise, the expect will throw, and the following expect will pass the test
    expect(true).toBeTruthy();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X