Vamos começar pelos TESTES

Então é hora de começar nossa aplicação e vamos usar uma abordagem orientada a testes. O Create React App vem pré-empacotado com o Jest test-runner. Quando criamos a nossa aplicação ganhamos um teste simples para garantir que conseguimos renderizar nosso componente. Vamos dar uma olhada nisso!

O primeiro teste que temos em nossa aplição é o src/App.test.js e se você executar o comando npm test, em seu terminal, verá algo como essa saída:

output: npm test

Ele irá ficar parado aí aguardando por alterações em seus arquivos de testes para executar novamente. Então se quiser sair basta pressionar q.

Snapshot Testing

Já temos um teste que garante que conseguimos renderizar nosso componante App. Agora vamos capturar um snapshot dele para garantir que um refactory não vai provocar nenhum reflexo indesejado em nossa interface com o usuário.

Um típico cenário de teste com snapshot, tira uma "foto" do componente e compara com a última imagem salva do componente. O teste vai falhar se as duas imagens não combinarem: sendo essa uma mudança inesperada ou mesmo que o snapshot precise ser atualizado.

Então, vamos instalar o pacote para criar esse snapshot:

❯ npm install --save-dev react-test-renderer

Vamos aproveitar e começar a organizar nossos testes seguindo a convenção sugerida na documentação.

❯ mkdir -p src/__tests__
❯ mv src/App.test.js src/__tests__

Vamos agora, adicionar esse teste ao nosso arquivo App.test.js:

import renderer from 'react-test-renderer';
import App from '../App';

it('renders correctly', () => {
  const tree = renderer.create(
    <App />
  ).toJSON();
  expect(tree).toMatchSnapshot();
});

Se você deixou o teste executando no terminal, perceba o aviso de que foi escrito um snapshot. Você, também, pode rodar os testes novamente com npm t que é um atalho para npm test.

Snapshot Summary

O snapshot vai estar em src/__tests__/__snapshots__/App.test.js.snap e vai parecer como esse:

exports[`test renders correctly 1`] = `
<div
  className="App">
  <div
    className="App-header">
    <img
      alt="logo"
      className="App-logo"
      src="logo.svg" />
    <h2>
      Welcome to React
    </h2>
  </div>
  <p
    className="App-intro">
    To get started, edit 
    <code>
      src/App.js
    </code>
     and save to reload.
  </p>
</div>
`;

Agora não precisamos mais executar a aplicação inteira para verificar visualmente se alguma mudança inesperada impactou nossa interface com o usuário (UI).


CHECKPOINT:

❯ git add .
❯ git commit -am "added our first snapshot test"

Atualizando os snapshots que falharam

Nesse ponto, vamos traduzir algumas mensagens e ver como nosso teste vai se comportar. Ao traduzir as mensagens em App-header e App-intro no arquivo App.js quebramos o teste que verifica se os snapshots estão batendo.

snapshots falhando

Então precisamos atualizar nosso snapshot apertando u e teremos nossos testes passando novamente e a mensagem de que um snapshot foi atualizado.

um snapshot atualizado

Até agora, o arquivo App.js deve ser um pouco diferente dos arquivos JavaScript que você esta acostuma a ver. Então, vamos para a próma seção entender melhor o que é esse arquivo maluco!

results matching ""

    No results matching ""