Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Sobre o mecanismo de ser assincrono

Seria uma boa prática usar o mecanismo de algo assincrono quando ao clicar em um botão salvar espera-se que uma mensagem apareça na tela? O que se faz é executar em sequência e colocar esperas para que tenha certa garantia de que a mensagem teve tempo de aparecer em tela. Quais seriam outros usos desse mecanismo pensando em usos práticos reais?

1 resposta
solução!

Olá, Fernanda! Entendo que você está com dúvidas sobre a utilização de mecanismos assíncronos em testes de integração, especificamente quando se espera que uma mensagem apareça na tela após o clique em um botão.

Sim, é uma boa prática usar a assincronicidade nesses casos. Isso porque, em muitas situações, a resposta de uma ação (como o clique de um botão) pode não ser instantânea, como quando esperamos que uma mensagem apareça na tela. Se você espera receber algo de uma API por exemplo, terá que esperar essa resposta assíncrona da API e por isso deve usar assincronicidade. Nesses casos, o teste precisa aguardar essa resposta para poder prosseguir, e é aí que entram os mecanismos assíncronos.

No exemplo da aula que você está estudando, o teste está verificando se, após o clique no link "Cartões", o usuário é redirecionado para a página correspondente. Para isso, o teste precisa ser assíncrono, pois o redirecionamento para uma nova página não é instantâneo. Veja o trecho do código:

userEvent.click(linkPaginaCartoes);

const tituloPaginaCartoes = await screen.findByText('Meus cartões');
expect(tituloPaginaCartoes).toBeInTheDocument();

Aqui, após o clique no link, o teste está aguardando (await) encontrar na tela o texto 'Meus cartões'. Somente após encontrar esse texto é que o teste prossegue para a próxima linha, onde verifica se o texto realmente está na tela.

Outros usos práticos desse mecanismo seriam, por exemplo, quando se faz uma requisição a uma API e se espera por uma resposta, ou quando se faz uma operação que leva um tempo para ser concluída (como um upload de arquivo, por exemplo). Em todos esses casos, os mecanismos assíncronos permitem que o teste aguarde a conclusão dessas operações para poder prosseguir.

Espero ter ajudado e bons estudos!