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()
mocha.js
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()
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
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)