Capítulo 7.16: Trabalhando com rotas no ExpressJS: Testando as rotas com Jest ou Mocha
Uma das principais características do ExpressJS é a sua capacidade de gerenciar rotas de forma eficiente e eficaz. Rotas são essenciais para qualquer aplicação web, pois determinam como uma aplicação responde a um pedido do cliente em um determinado endpoint, que é uma URI (ou caminho) e um método de solicitação HTTP específico (GET, POST, etc.).
Para criar uma rota no ExpressJS, usamos o método app.METHOD(), onde METHOD é o método de solicitação HTTP que você deseja utilizar. Por exemplo, se quisermos criar uma rota para responder a solicitações GET no caminho raiz (/), poderíamos fazer assim:
app.get('/', function (req, res) { res.send('Olá Mundo!') })
Embora a criação de rotas seja relativamente simples, é importante garantir que elas estejam funcionando corretamente. E é aí que entram os testes. Existem várias ferramentas de teste disponíveis para Node.js, mas neste curso, vamos nos concentrar em duas das mais populares: Jest e Mocha.
Jest é uma estrutura de teste completa que requer pouco ou nenhum esforço de configuração, o que a torna uma excelente opção para iniciantes. Ele também tem uma sintaxe de teste muito clara e fácil de entender, o que facilita a escrita de testes. Vamos ver como podemos usar o Jest para testar as nossas rotas.
const request = require('supertest'); const app = require('../app'); describe('Test the root path', () => { test('It should response the GET method', () => { return request(app).get("/").then(response => { expect(response.statusCode).toBe(200); }) }); });
Neste exemplo, primeiro importamos o módulo supertest, que nos permite fazer solicitações HTTP para o nosso aplicativo. Em seguida, importamos o nosso aplicativo Express. Depois, usamos a função describe do Jest para agrupar os nossos testes e a função test para definir um teste. O teste em si é bastante simples: fazemos uma solicitação GET para a rota raiz e verificamos se o código de status da resposta é 200, que é o código de status HTTP para "OK".
Agora, vamos ver como podemos fazer algo semelhante com o Mocha. Ao contrário do Jest, o Mocha é apenas uma estrutura de teste e requer módulos adicionais para fazer afirmações ou solicitações HTTP. Neste exemplo, vamos usar o Chai como nossa biblioteca de afirmações e o supertest para as solicitações HTTP.
const request = require('supertest'); const app = require('../app'); const expect = require('chai').expect; describe('GET /', function () { it('should respond with 200', function (done) { request(app) .get('/') .end(function(err, res) { expect(res.statusCode).to.equal(200); done(); }); }); });
Como você pode ver, a sintaxe do Mocha é um pouco diferente da do Jest, mas a ideia geral é a mesma. Nós fazemos uma solicitação GET para a rota raiz e verificamos se o código de status da resposta é 200.
Em resumo, o ExpressJS torna a criação de rotas uma tarefa simples, mas é importante garantir que essas rotas estejam funcionando corretamente. Para isso, podemos usar ferramentas de teste como o Jest ou o Mocha, que nos permitem escrever testes claros e concisos para as nossas rotas.
Testar suas rotas é uma prática recomendada, pois permite que você descubra e corrija problemas antes que eles afetem seus usuários. Além disso, os testes também podem servir como documentação, mostrando a outros desenvolvedores (ou a você mesmo, no futuro) como sua aplicação deve se comportar.
Portanto, invista algum tempo aprendendo e utilizando essas ferramentas de teste. Seu código será mais robusto, sua aplicação será mais confiável e você poderá dormir melhor à noite sabendo que sua aplicação está bem testada.