O Que É Mocha? O Framework de Testes JavaScript Flexível
Mocha é um framework de testes JavaScript flexível que fornece a estrutura de testes e o runner, permitindo que você traga suas próprias bibliotecas de asserção e de mocking.
Mocha adota uma abordagem não agrupada: ele oferece uma forma limpa de organizar e executar testes, mas deixa asserções, mocking e outras preocupações para bibliotecas que você escolhe. Essa modularidade o tornou um favorito de longa data para times que querem montar sua própria stack de testes.
O que Mocha é
Mocha é um framework de testes JavaScript que roda no Node.js e no navegador. Ele fornece a estrutura describe/it, hooks (before, after, beforeEach) e um test runner com múltiplos reporters, mas deliberadamente deixa asserções e mocking para bibliotecas separadas como Chai e Sinon.
Traga suas próprias asserções
Diferentemente de frameworks tudo-em-um, Mocha se combina com uma biblioteca de asserção. Chai é a escolha comum, oferecendo os estilos expect, should e assert. Sinon adiciona spies, stubs e mocks. Essa modularidade é flexível, mas significa mais configuração do que uma ferramenta com tudo incluído.
Um exemplo de teste
Mocha estrutura os testes; Chai fornece a asserção.
const { expect } = require("chai");
describe("math", () => {
it("adds numbers", () => {
expect(1 + 2).to.equal(3);
});
});Papel em CI/CD
Em CI, o comando "mocha" executa a suíte e sai com código diferente de zero em caso de falha. Reporters podem emitir formatos como JUnit XML ("mocha-junit-reporter") para dashboards de CI. Mocha suporta execuções em paralelo para acelerar suítes maiores. Sua flexibilidade se destaca quando um projeto precisa de uma configuração específica de asserção ou de mocking que uma ferramenta tudo-em-um não permitiria.
Alternativas
Jest e Vitest são frameworks com tudo incluído que agrupam asserções, mocking e cobertura, exigindo menos configuração manual. O test runner nativo do Node é uma opção leve. Mocha continua sendo uma escolha sólida para times que valorizam uma stack de testes modular e personalizável.
Principais conclusões
- Mocha fornece a estrutura de testes e um runner, não asserções ou mocking.
- Ele é comumente combinado com Chai para asserções e Sinon para mocks.
- Em CI, ele sai com código diferente de zero em caso de falha e pode emitir relatórios JUnit.