Esse texto é algo rápido, então para adiantar já fiquem sabendo que as ferramentas usadas é Sinon, Mocha e Chai sem Typescript.

Outra coisa também é para testes de JS em cenários de API, browser a coisa é diferente.

Vamos lá, gerenciamento de objetos esse é um detalhe que vejo muita gente esquecendo quando usam NodeJS e também para os testes, produzindo testes bem lentos e culpando a ferramenta que já compilou o código.

Então existe alguns tipos de declarações, objetos primitivos, os objetos literais e objetos instanciados. Objetos instanciados eles criam cópias em memórias e podem até duplicar isso ao longo da execução com novas instâncias.

Objetos instanciados consome mais memória durante a execução e o garbage collector vai executar durantes seus testes prejudicando a execução. Então se quer ganhar tempo evite isso.

Objetos literais executam mais rápido, porém ele pode sobre de problemas com alterações de propriedades que vai propagar para outros testes.

Objetos primitivos da linguagem, relembrando são os objetos tipo String, Number, BigInt, Boolean, undefined, null e Symbol.

Sabendo disso vamos para a organização

Usando o describe e const comece as declarações dos primitivos

describe('test example', () => { 
  const stringValidation = 'declaração de string primitiva';
  const numberValidation = 'declaração de numero primitivo';
});

Isso já reduz a necessidade da compilação de fazer essa organização, a próxima etapa é declarar os objetos literais, isso também reduz as necessidades de compilação.

describe('test example', () => { 
  const stringValidation = 'declaração de string primitiva';
  const numberValidation = 'declaração de numero primitivo';
  const objLiteral = {
    propriedade: 'props'
  };
});

Agora é sempre bom lembrar da regra de Organize, Atue e Cheque.

Essa regra ajudará também na execução, as instancias serão executadas uma única vez.

Essa organização básica do texto, eu volto para contar mais como agir na parte do Atue.