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

[Dúvida] Uso do stubPost

Boa noite! Eu fiquei com dúvida no conceito do uso de Stub e também do stubPost no cenário de usuário que não existe. Até aonde eu entendi o stub pode ser útil em ocasiões onde, por exemplo de uma API, ser externa do sistema (de terceiros), extremamente lenta, ainda em desenvolvimento, dentre outros.

Porém, no cy.intercept, colocando quaisquer outros códigos HTTP, como 410, 411, não houve nenhum efeito colateral na execução do teste. Na aula, pelo que entendi, quando foi preenchido usuário e senha inexistentes, a API do Alurapic faz uma requisição e nesse caso, retorna uma resposta de usuário não encontrado/não autorizado e o intercept do Cypress substitui a requisição real pelo stub. E aí é que entra as dúvidas:

1 - É comum ou usual substituir o retorno da requisição real por um stub apenas para finalidade de 'simulação'em APIs com FrontEnd?

2 - Daria para nesse cenário do Alurapic não utilizar um stub e testar o retorno real da requisição para fazer o 'assert' do código HTTP?

3 - Existe um artigo na Alura sobre diferença de uso entre 'stub' e 'mock', mas ainda não captei a ideia. No contexto do Alurapic, como se aplica o uso do stub e mock?

1 resposta
solução!

Olá, Eduardo! Tudo bem?

O conceito de stub e mock pode ser um pouco complexo no começo, mas vou tentar esclarecer suas dúvidas da melhor forma possível.

1 - Sim, é bastante comum usar stubs para simular respostas de APIs em testes de front-end. Isso permite que você teste o comportamento do seu front-end em resposta a diferentes respostas da API sem precisar realmente fazer uma solicitação à API real. Isso é especialmente útil quando a API é externa, lenta ou continua em desenvolvimento, como você mencionou.

2 - Sim, você poderia não usar um stub e testar o retorno real da requisição para fazer o 'assert' do código HTTP. No entanto, isso tornaria seu teste dependente da API real. Se a API estiver indisponível ou lenta, seu teste falharia ou demoraria muito para ser concluído, mesmo que o código do front-end esteja funcionando corretamente. Além disso, se você quiser testar como seu front-end reage a diferentes respostas da API (por exemplo, um código de status 200 versus um código de status 500), você teria que manipular a API real para retornar esses códigos de status, o que nem sempre é possível ou desejável.

3 - A principal diferença entre um stub e um mock é que um stub apenas simula uma resposta, enquanto um mock também verifica se a função foi chamada da maneira esperada. No contexto do Alurapic, um stub poderia ser usado para simular a resposta da API quando o usuário tenta fazer login. Um mock, por outro lado, poderia ser usado para garantir que a função de login foi chamada com os argumentos corretos (por exemplo, o nome de usuário e a senha).

Espero que isso ajude a esclarecer suas dúvidas!

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.