FNSP Web Page

O Node já traz executor de testes

Durante anos, escrever o primeiro teste de um projeto Node começava por escolher entre o Jest, o Mocha, o Vitest e mais três — e por instalar duzentos pacotes para correr uma asserção.

Desde a versão 20, o Node traz um executor de testes embutido. Para projetos pequenos e para bibliotecas, muitas vezes é tudo o que é preciso.

1. Um teste, sem instalar nada

import assert from 'node:assert/strict';
import { test } from 'node:test';

import { somar } from './calculadora.js';

test('soma dois números', () => {
  assert.equal(somar(2, 3), 5);
});

node --test

O node --test procura sozinho os ficheiros com .test. ou _test. no nome, ou dentro de uma pasta test/.

2. O que vem na caixa

  • describe e it, para quem vem do Mocha ou do Jest.

  • before, after, beforeEach e afterEach.

  • test.skip, test.only e test.todo.

  • Testes assíncronos: devolver uma promessa basta.

  • --watch, para repetir a cada gravação, e --experimental-test-coverage para a cobertura.

import assert from 'node:assert/strict';
import { describe, it, beforeEach } from 'node:test';

describe('carrinho', () => {
  let carrinho;

  beforeEach(() => {
    carrinho = [];
  });

  it('começa vazio', () => {
    assert.equal(carrinho.length, 0);
  });

  it('aceita um artigo', async () => {
    carrinho.push(await procurar('cadeira'));
    assert.equal(carrinho.length, 1);
  });
});

3. Onde ele não chega

Não traz transformação de TypeScript nem de JSX, não simula um browser, e o sistema de mocks é mais modesto do que o do Jest. Para uma aplicação de interface, uma ferramenta a sério continua a compensar.

Para uma biblioteca, um script ou o código de servidor de um projeto pequeno, a conta é diferente: zero dependências, zero configuração, e um ficheiro a menos na raiz do repositório.

{
  "scripts": {
    "test": "node --test",
    "test:watch": "node --test --watch"
  }
}

Comentários

Ainda ninguém comentou este artigo.

Voltar ao blog

Gostávamos de saber quantas pessoas visitam o site, com o Google Analytics. Sem a sua autorização não corre nada. Política de Privacidade.