1
resposta

Esse teste está certo?

  it('Ao cadastrar um usuário, validar o retorno das informações do usuário', async () => {
    const data = {
      nome: 'John Doe',
      email: 'johndoe@example.com',
      senha: 'senha123',
    };

    const resultado = await authService.cadastrarUsuario(data);

    expect(resultado.content).toMatchObject(data);

    await Usuario.excluir(resultado.content.id);
  });

Como o método cadastrarUsuario altera data.senha, o objeto data usado no teste também é modificado.
Então o toMatchObject(data) não estaria comparando hash com hash em vez de validar corretamente o comportamento?

1 resposta

Bom dia, Luidi! Como vai?

Quando você utiliza toMatchObject(data), está comparando o objeto resultado.content com o objeto data. Se o método cadastrarUsuario altera a propriedade senha de data, como, por exemplo, criptografando-a, então realmente haverá uma discrepância na comparação, já que data.senha não refletirá a senha criptografada.

Para resolver isso, você pode ajustar o teste para verificar apenas as propriedades que não são alteradas ou para comparar a senha de forma adequada. Aqui está uma sugestão de como você pode ajustar seu teste:

it('Ao cadastrar um usuário, validar o retorno das informações do usuário', async () => {
  const data = {
    nome: 'John Doe',
    email: 'johndoe@example.com',
    senha: 'senha123',
  };

  const resultado = await authService.cadastrarUsuario(data);

  // Comparar apenas as propriedades que não são alteradas
  expect(resultado.content).toMatchObject({
    nome: data.nome,
    email: data.email,
  });

  // Opcionalmente, você pode verificar se a senha foi alterada
  expect(resultado.content.senha).not.toBe(data.senha);

  await Usuario.excluir(resultado.content.id);
});

Dessa forma, você está garantindo que apenas as informações que não devem ser alteradas sejam comparadas diretamente. E, se necessário, você pode adicionar verificações específicas para a senha, como garantir que ela foi realmente modificada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.