1
resposta

Erro no teste dos IDs gerados

Meu teste falhou

it(`#${UniqueIdService.prototype.generateUniqueIdWithPrefix.name} should not generate duplicate IDs when called multiple times`, () => {
    const service = new UniqueIdService();
    const ids = new Set();
    for (let i = 0; i < 50; i++) {
      ids.add(service.generateUniqueIdWithPrefix('app'));
    }
    expect(ids.size).toBe(50);
  });
Error: Expected 1 to be 50

e meu código está igual ao do professor. O que poderia ser?

1 resposta

Ôpa Tiago, como vai? Para ser sincero não vejo erro neste código e deveria funcionar, acredito ter sido alguma intermitência na execução do teste, já tentou fechar seu editor e tentar novamente, por que pelo resultado que mostrou o for deveria percorrer apenas duas vezes, e não faz sentido já que seu for está limitado a 50 loops.

Porém agente tem que ter em mente a situação do Karma, se ele estiver executando os testes de forma randômica, então é bem provável que possa dar erro em algum teste. Certifica se no seu arquivo de teste tem o beforeEarch, ele é responsável por executar tudo o que estiver no bloco antes de cada teste ser iniciado. Então sugiro criar uma variável antes do beforeEarch e instanciar o serviço dentro do beforeEarch, desta forma você garante que todos os testes irão ter uma nova instância do serviço.

Exemplo:

describe('serviço', () => {

    let service: Service = null;

    beforeEarch(() => {
        service = new Service();
    });

    it('teste', () => {
        //Então aqui não precisa mais inserir: const service = new UniqueIdService();
        ...
    });
});

Espero poder ter ajudado.