NestJS, testando aplicações com Jest

vamos aprender sobre o NestJS, como foco no teste das aplicações focado na parte do Mongoose

Introdução

Express foi criando para facilitar a manipulação do NodeJS. Apesar de todas a facilidades, alguns pontos deixam a desejar. O NestJS foi criado para tentar melhorar esses pontos, como foi TypeScript para melhorar o JavaScript. Não vamos entrar nos pormenores, vamos direto ao ponto!😁😁

Sugestão de leitura: Learn TypeScript 3 by Building Web Applications: Gain a Solid Understanding of TypeScript, Angular, Vue, React, and NestJS Book by Alexis Georges and Sebastien Dubois

Apesar de que não vamos entrar nos pormenores, gostaria deste tutorial ser o mais completo possível, para facilitar o aprendizado!😎😎

Criando um aplicativo NestJS do zero

Adoraria fazer essa parte grande, para parecer que estou ensinando algo, contudo, somente uma linha de código e você tem uma aplicativo funcional!😂😂 Não dá para ganhar dinheiro dos trouxas assim! 🤣🤣

nest new project-name

Vai demorar um pouco para instalar, como o Angular. São parecidos de propósito. O NestJS está no meio termo, entre Angular e Express, acho perfeito para os adeptos do MEAN stack como eu! 🥰🥰🥰

Esta é uma aplicação funcional, tente:

npm start

Vai para a porta 3000

Para quem é programador Angular, você vai se pegar confundindo: onde estou??? frontend ou backend??? parece o mesmo, mas você está no servidor!!! 😯😯😯

Contudo, vamos trabalhar com testes, rode:

npm run test:watch

Lembra no curso que precisávamos ficar criando esses comandos no package.json, o pessoal do Nest já cria tudo!! 🙏🙏🙏 Soma o tempo que perdia com isso e vai assisti Netflix, programador também é filho de Deus😍😍

Sugestão: Scorpion,

Se quiser, pode deixar a aplicação rodando, somente abra uma nova aba. No visual studio isso é bem simples.

Todo nosso trabalho está na pasta src. Note que os arquivos de testes estão como spec, falamos isso no curso, é a mesma coisa! 😁 Note também que temos uma pasta test, esse para contém testes e2e, não vamos abordar isso. 😅

Alguns pontos que merecem atenção🧐🧐:

  • ts significa typescript , que é a linguagem base do Nest;

  • service.ts é um tipo de arquivo conhecido como serviço, base do Angular. Isso facilita o processo de mocar, além de facilitar a conexão como MongoDB por o fazer em background;

Abaixo, para efeito de curiosidade, uma arquivo de teste padrão. Como se pode ver, testes já é incorporado no Nest, ou seja, o Nest já nasceu pensando em TDD! 😍😎🥰

//app.controller.spec.ts
import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';

describe('AppController', () => {
  let appController: AppController;

  beforeEach(async () => {
    const app: TestingModule = await Test.createTestingModule({
      controllers: [AppController],
      providers: [AppService],
    }).compile();

    appController = app.get<AppController>(AppController);
  });

  describe('root', () => {
    it('should return "Hello World!"', () => {
      expect(appController.getHello()).toBe('Hello World!');
    });
  });
});

Linha 18 testa se o método appController.getHello(). Tenta mudar ou o esperado, toBe('Hello World!'), ou o retornado pelo método🤔🤔🤔 . Vai falhar, ao menos eu teoria. Essa é uma excelente forma de testar o seu teste!

Obs. abaixo uma giff da Mônica usando um aspirador para aspirar outro aspirador, seria o caso de um teste para testar o teste; afinal de contas, o teste precisa funcionar, sendo assim, ser testado também!

O que vamos fazer é criar nossos próprios testes usando esses arquivos criados de forma automática.

Last updated