O teste é uma das etapas mais importantes na construção de um aplicativo; ajuda a apagar bugs prejudiciais e dá credibilidade e garantia de qualidade ao seu projeto.
A comunidade React produziu um grande número de bibliotecas para testar componentes e funções em aplicativos React. Esta postagem destaca algumas das principais opções para testar aplicativos React.
Jest
Jest , uma estrutura de teste criada e mantida pelo Facebook, foi amplamente adotada por outras empresas, como Airbnb, Uber e Amazon. O React é fornecido com o Jest pronto para uso, para que você não precise instalar como uma dependência.
Primeiros passos com Jest
Existem duas maneiras de começar a testar o Jest. Primeiro, para um projeto inicializado com create-react-app
, instale usando um gerenciador de nó como visto abaixo:
//NPM npm install-D react-test-renderer //Yarn yarn add-D react-test-renderer
O comando acima instala react-test-renderer
no aplicativo para uso em teste de instantâneo.
Em seguida, copie o comando abaixo para instalar o pacote para teste DOM em um aplicativo React usando Jest.
//NPM npm install-D @ testing-library //Yarn yarn add-D @ testing-library/react
Para aplicativos não inicializados com create-react-app
, você precisará seguir as etapas abaixo.
Primeiro, adicione os seguintes pacotes como dependências de desenvolvimento:
npm install--dev jest babel-jest @ babel/preset-env @ babel/preset-react react-test-renderer
Em seguida, adicione a configuração do Babel:
//babel.config.js module.exports={ presets: ['@ babel/preset-env','@ babel/preset-react'], };
A seguir, inclua jest
no package.json
do seu aplicativo:
{ "scripts": { "teste":"brincadeira" } }
Agora, você escreverá um teste simples para o componente do seu aplicativo React:
import React from"react"; import {cleanup, render} from"@ testing-library/react"; importar {FootLabel} de'./FootLabel describe ("FootLabel", ()=& gt; { test ("o componente deve exibir rótulo", ()=& gt; { const {getByText}=render (& lt; FootLabel label="Test"/& gt;); expect (getByText ("Test")). toBeTruthy (); }); });
O teste acima usa o método describe
de Jest para representar componentes semelhantes ao FootLabel
e testa a aparência do componente em relação à saída esperada.
Além de testar o resultado esperado de um componente em relação à saída real, Jest também executa teste de instantâneo ing .
Um s napshot test garante que a interface do usuário de um aplicativo não muda inesperadamente. O teste de instantâneo no Jest permite que um usuário compare um componente em um estado com qualquer outro estado que possa assumir. Os instantâneos são especialmente úteis em projetos com estilos globais usados em todos os componentes. Alguns dos prós de usar Jest incluem: Um dos contras de Jest é que ele requer outras estruturas de teste de terceiros, como Enzyme, para melhorar seu desempenho. Além disso, ele pode ter dificuldade quando usado em grandes projetos que apresentam diferentes tipos de testes, como testes de integração. Você pode ver a documentação do Jest para saber mais sobre como testar o Jest. Mocha é uma estrutura JavaScript que roda em Node.js e é usado para testar aplicativos React. Possui suporte a navegador, teste assíncrono e uso de bibliotecas de asserção. Com o Mocha, um desenvolvedor tem controle total sobre quais ferramentas e plug-ins usar ao testar aplicativos. Devido às configurações e recursos específicos que fornece para testar aplicativos React, o Mocha se destaca em testes de simulação. Para testar aplicativos React com Mocha, primeiro instale o Mocha como uma dependência de desenvolvimento em seu projeto React usando o comando abaixo: Se você estiver usando o Yarn como seu gerenciador de pacotes, use este comando: Em seguida, atualize o script Veja o uso abaixo: O teste acima procurou um número Alguns dos prós de usar Mocha incluem o seguinte: Você pode ler mais sobre o Mocha em sua documentação oficial Jasmine é uma estrutura de teste simples de JavaScript para navegadores e Node.js. O Jasmine segue um padrão de desenvolvimento orientado por comportamento, portanto, a configuração geralmente é feita antes do uso. Com o Jasmine, os desenvolvedores podem testar a visibilidade e a resolução das interfaces do usuário em diferentes dispositivos. Para usar Jasmine no teste de aplicativos React, os desenvolvedores podem adicionar outras estruturas de terceiros, como Enzima . Os desenvolvedores costumam usar Jasmine em conjunto com o Enzyme, portanto, ele precisa ser instalado como parte das configurações. A seguir, inicialize o Jasmine usando o comando abaixo: Jasmine requer colocar todos os arquivos de configuração, incluindo Babel, Enzyme e JSDOM, em uma pasta Em seguida, navegue até o arquivo do projeto para trabalhar com A maioria da arquitetura de teste e funções auxiliares do Jasmine são muito semelhantes a Jest . Alguns dos prós do Jasmine incluem o seguinte: Apesar de seus benefícios, Jasmine não é a estrutura de teste perfeita para aplicativos React. Ele não oferece suporte a testes de instantâneo e requer bibliotecas de terceiros para paralelização e manipulação de DOM nativo. Enzyme é um utilitário de teste de JavaScript para React que torna mais fácil testar a saída dos componentes do React. Desenvolvido e mantido pela Airbnb, o Enzyme é amplamente usado por desenvolvedores em conjunto com outras bibliotecas de terceiros, como Jest e Chai . Para usar Enzyme, instale: Em seguida, crie um arquivo Aqui, você fará um teste superficial de um componente usando a Enzyme abaixo: No teste acima, você importou As vantagens da enzima incluem o seguinte: Apesar de ser uma estrutura de teste poderosa, Enzyme tem uma série de desvantagens. Por um lado, o Enzyme é construído em um Você pode aprender mais sobre a Enzyme lendo a documentação oficial. Com mais de 12 milhões de downloads por mês, a React Testing Library é uma das mais amplamente utilizou estruturas de teste para aplicativos React. Foi criado por Kent C. Dodds e atualmente é suportado pela comunidade de código aberto. A Biblioteca de Testes React permite que os desenvolvedores testem componentes para simular o comportamento de um usuário facilmente. Além disso, ele vem integrado com utilitários de teste React DOM que emula ações reais do usuário em um aplicativo React. Para usar a Biblioteca de testes React, primeiro instale usando o bloco de código abaixo: Ou usando o Yarn: A biblioteca de testes do React oferece suporte a ganchos e classes, portanto, os testes são consistentes, independentemente de você usar componentes de classe ou função. Alguns prós de usar a Biblioteca de Testes React incluem: Alguns contras do React Testing Library incluem a falta de suporte para renderização superficial e incapacidade de acessar o estado do componente. Testar os aplicativos React é muito importante para o desenvolvimento hoje. Essas bibliotecas tornam mais fácil do que nunca criar aplicativos React melhores e melhorar a experiência geral do usuário. Bibliotecas como Jest são mais adequadas para testar projetos maiores, enquanto outras bibliotecas, como React Testing Library, são mais adequadas para testar comportamentos de usuário e oferecer suporte a componentes de classe ou função. A postagem Principais bibliotecas de teste para React em 2021 apareceu primeiro no LogRocket Blog . import React from"react";
importar renderizador de"react-test-renderer";
importar Navbar de"./Navbar.js" descrever ("
Mocha
Instalação
npm i--save-dev mocha
fio adicionar mocha
test
em seu package.json
para incluir o Mocha: { "scripts": { "teste":"mocha" }
}
//test/test.js var modal=requer ('modal'); describe ('Array', function () { describe ('# indexOf ()', function () { it ('deve retornar 0 quando o valor não estiver presente', function () { assert.equal ([1, 2, 3, 4, 5].indexOf (6),-3); }); });
});
6
na matriz e retornou -3
se o índice do número não foi encontrado.
Jasmim
Instalação
yarn add-D babel-cli \ @ babel/register \ babel-preset-react-app \ cross-env \ enzima \ enzima-adaptador-react-16 \ jasmim-enzima \ jsdom \ jasmim
//Para NPM npm execute jasmine init //For Yarn
yarn run jasmine init
spec
. //babel.js
require ('@ babel/register'); //para texto datilografado
require ('@ babel/register') ({ "extensões": [".js",".jsx",".ts",".tsx"]
}); //enzima.js ou enzima.ts
//certifique-se de que a extensão do arquivo é.ts se o seu projeto for um projeto de texto digitado
import jasmineEnzyme from'jasmine-enzima';
importar {configurar} de'enzima';
importar adaptador de'enzima-adaptador-react-16'; configurar ({adaptador: novo adaptador ()}); beforeEach (function () { jasmineEnzyme ();
}); //jsdom.js importar {JSDOM} de'jsdom'; const dom=new JSDOM ('& lt; html & gt; & lt; body & gt; & lt;/body & gt; & lt;/html & gt;');
global.document=dom.window.document;
global.window=dom.window;
global.navigator=dom.window.navigator;
spec/support/jasmine.json
e edite a configuração para permitir que outras bibliotecas de terceiros funcionem com Jasmine. //para projetos normais "ajudantes": [ "helpers/babel.js", "helpers/**/*. js"
], //para projetos de texto datilografado "ajudantes": [ "helpers/babel.js", "helpers/**/*. {js, ts}"
],
Enzima
npm i-D enzima-adaptador-reagente-16
enzima.js
em seu diretório src
e escreva o bloco de código abaixo importar Enzima, {configurar, raso, montar, renderizar} de'enzima';
importar adaptador de'enzima-adaptador-react-16'; configurar ({adaptador: novo adaptador ()});
export {raso, montagem, render};
exportar Enzima padrão;
import React from'react';
//estamos importando de nosso enzima.js
importar {raso} de'./enzyme';
importar FootNav de'./FootNav'; descrever ('FootNav', ()=& gt; { test ('renderiza o texto correto no componente', ()=& gt; { const wrapper=shallow (& lt; MyComponent label="Contact Fortune"/& gt;); expect (wrapper.find ('. my-label'). get (0).props.children).toEqual ('Contact Fortune'); });
});
raso
da Enzyme e um componente FootNav
. Em seguida, você descreveu o componente e verificou se ele foi renderizado corretamente e retornou o texto esperado, que em nosso caso é Hello Fortune
. Para terminar o teste, você coloca nossa expectativa, que o primeiro filho da matriz retorna o texto, Hello Fortune
.
react-dom
personalizado, então às vezes não pode suportar certos novos recursos do React. Por outro lado, a Enzyme incentiva o uso de seletores de ID e CSS, que às vezes quebram o código quando refatorados. Biblioteca de teste React
npm install--save-dev @ testing-library/react
yarn add--dev @ testing-library/react
Uso
import * as React from'react' função modal ({crianças}) { const [showModal, setShowModal]=React.useState (false) Retorna (
Resumo