No último exemplo de testes da aula "Simulação (mock) de funções", foi realizado o seguinte teste:
it('Deve fazer uma chamada simulada ao BD', () => {
const editora = new Editora(objetoEditora);
editora.salvar = jest.fn().mockReturnValue({
id: 10,
nome: 'CDC',
cidade: 'Sao Paulo',
email: 'c@c.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),
}),
);
});
});
Entretanto, não entendi como esse trecho estará testando o método salvar da classe Editora, pois o resultado desse teste sempre será o mesmo, independente do que eu faça no método salvar real.
Entendo que a ideia é criar um mock para que, quando chamado, o método não acione o banco de dados, mas ao menos espero que o teste tenha alguma utilidade para evitar que eu faça alterações indevidas no método salvar. Por exemplo, se eu alterar o método salvar da classe Editora para retornar o número inteiro 1, o teste vai continuar passando.