2
respostas

Nao faz sentido

Qual o sentido de usar o mock reconstruindo o metodo da classe?

Voce simplesmente vai estar testando o metodo novo criado no proprio teste

  it('Deve fazer uma chamada simulada ao BD', () => {
    const editora = new Editora(objetoEditora);

    editora.salvar = jest.fn().mockReturnValue({
      id: 10,
      nome: 'CDC',
      cidade: 'SP',
      email: 'fds@gmail.com',
      created_at: '2022-10-01',
      updated_at: '2022-10-01',
    });

    const retorno = editora.salvar();

    expect(retorno).toEqual(
      expect.objectContaining({
        id: expect.any(Number),
        ...objetoEditora,
        created_at: expect.any(String),
        updated_at: expect.any(String),
      }),
    );
  });

Por exemplo isso usado no video, da um override no metodo, SE EU SIMPLESMENTE IR NA CLASSE E DELETAR O SALVAR, VAI CONTINUNAR PASSANDO NO TESTE.

2 respostas

O propósito do mock aqui é isolar o teste da dependência externa (banco de dados). Você está certo de que o método original é sobrescrito no teste, mas isso é intencional. O objetivo não é testar a implementação real de salvar(), e sim verificar se ele retorna os dados esperados dentro do escopo do teste.

Se precisar validar a chamada do método original, pode testar sem o mock ou usar um spy (jest.spyOn) para monitorar chamadas sem sobrescrevê-lo.

é pq não retornaria? é igual dizer que espera que 1+1 é igual a 2, e testar. Sempre vai estar correto, a não ser que mudem a logica da matematica.

Ainda não entendi como o exemplo mostrado na aula seria usado no mundo real