Atualizado: 02/01/2025

Assert - Node.js

No tema anterior, para verificar o resultado de um teste, o valor obtido foi comparado com o resultado esperado:

if(result !== expectedResult) {
  throw new Error(`Expected ${expectedResult}, but got ${result}`);
}

Essa comparação é bastante trivial e, de fato, é usada em muitos testes com pequenas variações. Para simplificar a verificação de resultados em testes, o Node.js possui um módulo embutido chamado assert. Além disso, existem várias bibliotecas conhecidas como "Assertions" que servem ao mesmo propósito, como should.js, expect.js, etc. No entanto, neste caso, vamos focar no uso do módulo assert.

equal

A função assert.strictEqual() compara dois valores e possui a seguinte sintaxe

assert.strictEqual(actual, expected[, message])

Os parâmetros actual e expected representam os valores a serem comparados. Se eles não forem iguais, um erro será lançado. Como parâmetro opcional, message pode ser utilizado para passar uma mensagem de erro. Por exemplo, definimos o seguinte arquivo-módulo operations.js:

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

Aqui, definimos uma função simples de multiplicação de dois números. Vamos testá-la criando o arquivo operations.test.js:

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

it("should multiply two numbers", function() {
    const expected = 15;
    const result = operations.multiply(3, 5);
    assert.strictEqual(result, expected);
});

Se ambos os valores forem iguais, ao rodar o teste veremos na console que os testes passaram. Caso os valores não sejam iguais, veremos marcadores vermelhos com mensagens de erro:

c:\app> npm test

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

✔ should multiply two numbers

1 passing (5ms)

Certamente, a utilização da função assert.strictEqual é mais simples do que comparar manualmente dois valores e lançar um erro com uma mensagem específica.

Ao contrário da função assert.strictEqual(), a função assert.notStrictEqual() lança um erro se ambos os valores forem iguais:

it("should multiply two numbers", function() {
  const expected = 15;
  const result = operations.multiply(3, 5);
  assert.notStrictEqual(result, expected);
});

Neste caso, o teste passará somente se os valores não forem iguais.

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