Skip to main content

Introdução

A família de @testing-library de pacotes que ajudam-te a testar os componentes de interface de utilizador de uma maneira centrada no utilizador.

Quanto mais os teus testes se parecerem com a maneira que o teu software é usado, mais confiança eles podem dar-te.

O problema

Tu queres escrever testes sustentáveis que dam-te alta confiança de que os teus componentes estão funcionando para os teus utilizadores. Como parte deste objetivo, queres que os teus testes evitem a inclusão de detalhes de implementação para que assim a refatorações dos teus componentes (que mudam a implementação mas não a funcionalidade) não quebrem os teus testes, não abrandam-te nem a tua equipa.

A solução

A biblioteca principal, DOM Testing Library, é uma solução leve para testagem de páginas de web consultando e interagindo com os nós do DOM (seja simulado com JSDOM/Jest ou no navegador). Os principais utilitários que ela fornece envolvem a consultar o DOM por nós de uma maneira que é parecida com maneira que o utilizador encontra os elementos na página. Desta maneira, a biblioteca ajuda a garantir que os teus testes a darem-te confiança de que a tua aplicação funcionará quando um utilizador de verdade usá-la.

A biblioteca principal tem sido envolvida para fornecer APIs ergonómicas para muitas abstrações, incluindo Angular, React, e Vue. Existe também uma extensão para usar as consultas da Testing Library para testes de Ponta-à-Ponta na Cypress e uma implementação para React Native.

O que esta biblioteca não é

  1. Um executor de teste ou abstração
  2. Específica à uma abstração de testagem

A DOM Testing Library funciona com qualquer ambiente que forneça APIS do DOM, tal como Jest, Mocha + JSDOM, ou um navegador de verdade.

O que deverias evitar com a Testing Library

A Testing Library encoraja-te a evitar a testagem de detalhes de implementação como o interior de um componente que estás a testar (embora ainda seja possível). Os Princípios Orientador desta biblioteca enfatizam uma concentração nos testes que assemelham-se minuciosamente a como as tuas páginas de web são interagidas pelos utilizadores.

Tu talvez queiras evitar os seguintes detalhes de implementação:

  1. Estado interno de um componente
  2. Métodos internos de um componente
  3. Métodos do ciclo de vida de um componente
  4. Componentes filhos