Agora que eu já terminei a maioria dos cursos da Udemy que me interessavam, vou buscar aprender outras coisas relacionadas com a área de desenvolvimento, a fim de reforçar algumas bases necessárias.
Algo que sinto bastante falta na maioria dos cursos é sobre a abordagem de testes automatizados. Pra ser sincero, ainda não fiz nenhum curso que aborde isso de maneira significativa. A grande maioria simplesmente nem aborda o assunto.
É engraçado porquê absolutamente todo mundo do mundo dev fala que testes são importantes mas encontrar material de qualidade sobre o assunto é algo bem chato de se fazer. Há um monte de material por aí sobre como biblioteca A ou B é ótima para TDD, sobre o que é BDD, sobre testes de integração e etc… mas exemplos práticos e de utilização real são bem poucos e difíceis de achar.
O Diego, da Rocketseat fez um excelente vídeo abordando o assunto, então aproveitei para seguir o hands on do vídeo e tentar na prática um pouco mais de TDD. Valeu a pena. =]



O vídeo aborda um mundo de coisas. Vou deixar abaixo a lista de pacotes instalados durante o tutorial.
Dependências comuns:
- Express
- Sequelize & PG
- Dotenv
- BCryptJS
- Json Web Token (jwt)
- Factory Girl
- Faker
Dependências de desenvolvimento:
- Sequelize CLI
- Nodemon
- Jest
- Sqlite3
- Supertest
No início, o banco utilizado no projeto é o Postgres. Mas para os testes é utilizado Sqlite.
Essa parte valeu mais pela curiosidade de ver como seria um mesmo projeto acessando diferentes bancos de dados para diferentes fins e como isso pode ser controlado por variáveis de ambiente, mas fora isso, a inclusão do Postgres não teve muito impacto no tutorial em si. Dava pra passar sem ele…
Falando em variáveis de ambiente, eu tive uns probleminhas com a tal da NODE_ENV no windows. Por sorte encontrei o pacote Cross Env, que resolveu muito bem este problema.
A única questão é que tive de colocar isso no script do package.json, ao invés do script indicado no vídeo:
"pretest": "cross-env NODE_ENV=test sequelize db:migrate",
"test": "cross-env NODE_ENV=test jest",
"posttest": "cross-env NODE_ENV=test sequelize db:migrate:undo:all"
Fora isso, o tutorial correu bem… na maioria das vezes.
Uma coisa que me deixou um pouco frustrado é que às vezes os erros que apareciam no console não eram muito claros.
Em fase de desenvolvimento fica um pouco mais fácil imaginar de onde vem determinado erro porquê parte do projeto está fresco na memória mas imagino o quanto deve ser chato resolver um erro de autenticação por causa de algum campo faltando em algum Model (mas o teste não acusa isso de forma satisfatória) e coisas do gênero em um projeto em andamento adiantado.
De qualquer forma, é um ótimo tutorial. =]










