Criando testes na aplicação com Jest e SuperTest - Code/drops #93
ฝัง
- เผยแพร่เมื่อ 12 ธ.ค. 2024
- ✅ Inscreva-se no DoWhile2021: bit.ly/30EkU0I
Você provavelmente já se perguntou como pode realizar testes na sua aplicação, quais tipos de testes utilizar e quando utilizar.
Nesse vídeo iremos entender na prática como aplicar os testes unitários e de integração, utilizando Jest e Supertest.
github.com/roc...
-----
Confira a grade completa de conteúdos do canal aqui: rocketseat.com...
Conecte-se a 200mil devs e avance para o próximo nível com a nossa plataforma: rocketseat.com...
Cadastre-se na nossa plataforma: app.rocketseat...
Junte-se a mais de 392mil devs em nossa comunidade no Discord: / discord
Acompanhe a Rocketseat nas redes sociais:
Twitter: @rocketseat
Facebook: @rocketseat
Instagram: @rocketseat_oficial
Nos ouça também no Spotify:
Podcast Faladev
Podcast Alumni
Podcast Proxy
Muito bom. Era exatamente isso que eu precisava. Os outros vídeos frisam demais na questão dos serviços mockados e os testes acabam ficando muito vagos. Eu precisava desse teste de integração, com interação real com o banco. Obrigado
Gostei da sacada ein 14:25 a Dani manda muito bem.
Muito bom! Adoraria saber sobre SOLID e também como estruturar as pastas, seus nomes, ondem deve ficar e etc...
Dani, parabéns pela tua didática!
Isso me ajudou muito no meu skeleton aqui. Tenho algumas mudanças, mas consegui adaptar ao meu mundo!
Parabéns!
Dani, vc não faz ideia do quanto vc me ajuda no trabalho, obrigado!
Já pesquisei outros vídeos sobre o tema e o seu foi o mais claro. Muito obrigado.
aula de testes e engenharia de software junto, sensacional, parabéns, muito obrigado mesmo!
Massa Dani! Gostaria muito de ver vídeos sobre SOLID e Clean Architecture.
Faaaaala, Gabriel!
Sugestão anotadíssima! 💜 😍
Também estou querendo isso. Gostei muito da organização do projeto da Dani, ficou muito clean.
Ótima didatica, conteúdo incrível.
Adorei o code/drops Dani vc é perfeita, eu tava com duvida como fazer teste de integração mas vc esclareceu tudo o isso pra mim
Wooow!
Sério, Leandro? Que massa que tiramos suas dúvidas! A Dani é fera, né? 💜 😍
muito legal! agora falta os testes de frontend ReactJSsssssss
Estou muito feliz com os novos Cod/drops.
Sugestão de conteúdo: Como trabalhar com transactional para prevenir erros com múltiplas operações na base de dados.
Oi Dani, que vídeo massa!
Os testes são incríveis mesmo e com eles sentimos mais segurança para fazer alterações na aplicação.
Tenho adotado o TDD como prática nas minhas aplicações pessoais e percebo o quanto sofri atoa quando não desenvolvia com testes kkkkkkk
Nunca usei o prisma mas já ouvi falar bem dele.
Vc poderia fazer um vídeo explicando mais sobre o ORM Prima e abordando quais seriam as principais diferenças e vantagens em relação ao TypeORM?
Valeu Dani!
Finalmente consegui implantar os testes unitários e de integração com sucesso, obrigado!!!
Woooow!
Show, Gui! Que massa! E curtiu? 💜 😍
@@rocketseat Trabalhoso mas vale a pena, só nessa brincadeira de começar os testes unitarios ja peguei bug em feature nova, ainda bem pois iria para produção :(
OLHA A QUALIDADE DESSE CONTEÚDO !!!
Olá Dani/Rocketseat, primeiramente meus parabéns pelo ótimo conteúdo apresentado por você e pela equipe Rocketseat. Gostaria de saber se poderiam gravar um vídeo falando sobre testes de Mutação com Javascript. Recentemente eu vi um só que na linguagem PHP.
Muito bom! Uma sugestão que acredito que outros teriam também: Uma aplicação com o fastify como provider, visto que o pacote tem crescido demais na comunidade Node!
Show que curtiu, Bruno! Opa, anotei aqui a sua sugestão! 🚀 💜
Muito obrigado!! Eu estava precisando disso
Pq não usou o UserDAOInMemory no teste de integração ao invés de criar banco de dados?
*que se fosse criar banco de dados pra teste não precisaria nem do DAOInMemory, poderia ter usado o banco de teste.
Show de bola! Vow msm pelo conteúdo!
Daniele faz um vídeo com um Frontend, exemplo Next conectando ao Backend do Prisma que você mostrou, um abraço.
Danii faz um video fazendo esse backend 🥰 amei o video 💜💜
Para quem tiver esse erro: ( class CustomEnvironment extends NodeEnvironment ) TypeError: Class extends value # is not a constructor or null
Solução: const NodeEnvironment = require('jest-environment-node').default;
Tu me salvou demais, perdi mais de 1h tentando achar uma solução. Muito obrigado!!
boa, George
Muito bom o conteudo e me ajudou muito, poderia mostrar um pouco mais sobre a arquitetura solid
Quero Code/Drops de SOLID 🙏🙏
Sugestão anotadíssima, Ruan! 💜 😍
sim
Fala pessoal! Seria muito interessante um vídeo aplicando testes no frontend (React).
Vídeo maravilhoso Dani, ainda sou muito travado nessa parte do teste e você como sempre direcionou em 100% meus estudos. Ah, e como eu utilizo bastante o Prisma, você pode falar um pouco mais sobre a parte de Type Safety, lá da documentação? Pelo que eu vi a gente pode usar as próprias tiragens já geradas pelo Prisma Client pra gente usar na nossa aplicação. Achei maravilhoso. Bjao 🥰
Oi Dani!
Curto muito o conteúdo da Rocket, obrigado por mais este!
Fiquei super incomodado em criar um usuário no abata-se durante um teste kkk
Dei uma pesquisada e parece que uma boa prática é nunca testar o código "alheio". Neste caso por exemplo, uma falha na criação de usuário poderia ser uma falha no mantenedor do Banco de Dados e não o meu código.
Parece que eu teria que criar usar uma mock function neste caso...
Que dureza hein? É assim mesmo?
kkk
Obrigado!!
como ficaria o teardown com o mysql ?
Dani é possivel vermos o coverage dos testes integrados?
Como poderia fazer os testes para get, update, delete? E como poderia fazer a conexao usando o typeorm no lugar do prisma?
alguem ja recebeu o erro "TypeError: Class extends value # is not a constructor or null" em algum momento?
Rodo o teste, gera o schema e roda a seed, mas minhas query no repository não encontra nenhum banco, não consigo criar registro e nem fazer um select. D:
Mais alguém?
Excelente Aula !!
Eu tenho duas dúvida rs. Tem que criar um repositório fake para nossos teste unitário, ou basta fazer os teste direto no DB test e depois apaga-los, assim como no teste de integração ?
A outra é que, meus teste esta demorando quase 23 seg, para executar será que é alguma configuração no jest ? ou o pc mesmo ? rs
Manda muito!
Não era pra ter dado um erro no expect do createUserService.execute(userData) do rejects, ou seja, numa segunda tentativa de cadastro de user e não somente após ter mudado o texto de new Error?
Se for no banco de dados em memória não
O array sempre começa vazio
É necessário ficar criando repositórios in-memory? Não existe alguma ferramente que facilite a criação disso, eu lembro de ter ouvido algo sobre "Mock", mas não entendi muito bem na época, seria essa a ferramente usada para substituir os repositórios in-memory? #PR
Muito bom, porém o video ficou meio confuso com parte sendo executada e depois inicia.
super video valeu. Poderia fazer um video : como fazer uma api node TS com SOLID ? Obrigado
Dani faz o processo do zero sobre como fazer as separações de pastas 🙃
#PR
Primeiramente parabéns pelo vídeo, conteúdo show de bola.
Uma dúvida, quando o projeto vai para produção, os arquivos criados para a realização dos testes vai junto?
Abraços.
Faaaaaala, dev!
Valeu demais pelo feedback e por nos trazer a sua dúvida! 💜 😍
começo do superTest 39:15
Mano essa mina explica bem
A Dani é fera! Curtiu o conteúdo, Jubileu? 💜
Muito legal mas eu enfrento diversos problemas com essa abordagem
Vira e mexe recebo um erro P1002 de timeout nesse comando prisma migrate dev
Esse vídeo é muito bom, mas o alcance está péssimo!!!
Eu procuro ele pra buscar propositalmente pode "Testes node rocketseat" e ele não aparece :-\
Este vídeo é essencial não só para os testes mas também para o SOLID
Ola Dani, poderia fazer esse projeto desde o zero.
tem o video fazendo essa aplicação do zero?
Code/Drops de SOLID por favor
muito bom, só não está dando certo no nestjs: TypeError: TestEnvironment is not a constructor, mesmo assim obrigado, foi o mais perto que cheguei até agora pra conseguir testar o nestjs com prisma...
TypeError: Class extends value # is not a constructor or null
Ocorre no arquivo prisma-environment-jest.js.
Alguém manja ?
Fuçando a documentação do Jest, descobri que esse erro acontece após a atualização 28 do Jest.
Solução:
/* eslint-disable @typescript-eslint/no-var-requires */
const { execSync } = require('child_process');
const { TestEnvironment }= require('jest-environment-node');
const { resolve } = require('path');
const { Client } = require('pg');
const { v4: uuid } = require('uuid');
const prismaCli = './node_modules/.bin/prisma';
require('dotenv').config({
path: resolve(__dirname, '..', '.env.test'),
});
class CustomEnvironment extends TestEnvironment {
constructor({globalConfig, projectConfig}) {
super({globalConfig, projectConfig});
this.schema = `code_schema_${uuid()}`;
console.log('schemas', this.schema);
this.connectionString = `${process.env.DATABASE_URL}${this.schema}`;
}
setup() {
process.env.DATABASE_URL = this.connectionString;
this.global.process.env.DATABASE_URL = this.connectionString;
execSync(`${prismaCli} migrate dev`);
}
async teardown() {
const client = new Client({
connectionString: this.connectionString,
});
await client.connect();
await client.query(`DROP SCHEMA IF EXISTS "${this.schema}" CASCADE`);
await client.end();
}
}
module.exports = CustomEnvironment;
O link não está funcionando 😕
Esqueci de deixar público rs. Tenta agora
Consegui, muito obrigado!
Sugestão de vídeos:
1 - API de pagamentos
2 - testes com AdonisJs v5
3 - Solid e Clean architecture
será que alguem mais tem problema con o async-express-error?
Link tá "quebrado".
Tenta agora :)
Nunca entendi direito o SOLID
Showw, mas o link infelizmente está quebrado ;)
Faaaala, dev! Tenta agora! A Dani deixou ele público! 💜
@@rocketseat Agora foi 💜
O cara paga 15 k pra um tester pra descobrir que os usuários do sistema dele não consegue logar por causa do espaço que o teclado do celular dá automaticamente quando o usuário seleciona o e-mail
Plss code drops de solid
Sugestão anotadíssima! 💜 🚀
software try to learn new tNice tutorialngs and go outside of your comfort zone. I just watch TH-cam videos to get better. And don’t be afraid to
.
Just get a laptop. Legit