Atualizado: 02/01/2025

Organizando Testes com o Método describe - Node.js

Durante o desenvolvimento, podemos ter múltiplos módulos e para cada um deles pode ter vários testes definidos. Com o método describe() definido em mocha.js, podemos organizar os testes em grupos relacionados. Por exemplo, os testes para um módulo específico formarão um grupo, enquanto os testes de outro módulo formarão outro grupo. Dividir os testes em grupos facilita a identificação de qual módulo ou grupo falhou, especialmente se houver muitos testes.

Considere um projeto com um módulo operations.js:

module.exports.multiply = function(x, y) {
    return x * y;
}

module.exports.add = function(x, y) {
    return x + y;
}

Para este módulo, definimos um arquivo de testes operations.test.js:

const assert = require("assert");
const operations = require("./operations");

describe("Testes de Operações", function() {
    it("deve multiplicar dois números", function() {
        const expected = 15;
        const result = operations.multiply(3, 5);
        assert.strictEqual(result, expected);
    });

    it("deve somar dois números", function() {
        const expected = 16;
        const result = operations.add(9, 7);
        assert.strictEqual(result, expected);
    });
});

No método describe(), o primeiro parâmetro é a descrição dos testes e o segundo é uma função que contém os testes.

Considere também um arquivo app.js:

const express = require("express");
const app = express();

app.get("/", function(request, response) {
    response.send("Hello Test");
});

app.get("/error", function(request, response) {
    response.status(404).send("NotFound");
});

app.get("/user", function(request, response) {
    response.send({name: "Tom", age: 22});
});

module.exports.app = app;

Para este arquivo, definimos um arquivo de testes app.test.js:

const request = require("supertest");
const assert = require("assert");

const app = require("./app").app;

describe("Testes do Express", function() {
    it("deve retornar Hello Test", function(done) {
        request(app)
            .get("/")
            .expect("Hello Test")
            .end(done);
    });

    it("deve retornar NotFound com status 404", function(done) {
        request(app)
            .get("/error")
            .expect(404)
            .expect("NotFound")
            .end(done);
    });

    it("deve retornar usuário com nome Tom e idade 22", function(done) {
        request(app)
            .get("/user")
            .expect(function(response) {
                assert.deepStrictEqual(response.body, {name: "Tom", age: 22});
            })
            .end(done);
    });
});

Aqui, o método describe organiza a segunda série de testes.

Executamos os testes:

c:\app> npm test

> testapp@1.0.0 test
> mocha *.test.js

    Testes do Express
    ✔ deve retornar Hello Test
    ✔ deve retornar NotFound com status 404
    ✔ deve retornar usuário com nome Tom e idade 22

    Testes de Operações
    ✔ deve multiplicar dois números
    ✔ deve somar dois números

    5 testes concluídos (44ms)
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com