1
resposta

Deve fazer uma chamada simulada ao BD

Ao rodar no terminal, é exibido a seguinte mensagem:

expect(received).toEqual(expected) // deep equality

- Expected  - 7
+ Received  + 7

- ObjectContaining {
-   "cidade": "São Paulo",
-   "created_at": Any<String>,
-   "email": "cdc@com",
-   "id": Any<Number>,
-   "nome": "cdc",
-   "updated_at": Any<String>,
+ Object {
+   "cidade": "Sao Paulo",
+   "created_at": "2022-10-01",
+   "email": "c@c.com",
+   "id": 10,
+   "nome": "CDC",
+   "updated_at": "2022-10-01",
  }

  55 |     const retorno = editora.salvar();
  56 |
> 57 |     expect(retorno).toEqual(
     |                     ^
  58 |       expect.objectContaining({
  59 |         id: expect.any(Number),
  60 |         ...objetoEditora,

  at Object.toEqual (src/teste/models/editora.test.js:57:21
  
  Alguém poderia me ajudar por favor?
1 resposta

Olá, Marcelo! Tudo bem?

Parece que você está tendo problemas com o teste unitário que está escrevendo. A mensagem de erro que você está vendo é devido a uma discrepância entre o que o teste esperava e o que realmente foi recebido.

Vamos analisar o que o teste esperava e o que foi recebido:

  • O teste esperava um objeto contendo os campos "cidade", "created_at", "email", "id", "nome", "updated_at" com os respectivos valores "São Paulo", Any, "cdc@com", Any, "cdc", Any.
  • O que foi recebido, no entanto, foi um objeto com os campos "cidade", "created_at", "email", "id", "nome", "updated_at" com os respectivos valores "Sao Paulo", "2022-10-01", "c@c.com", 10, "CDC", "2022-10-01".

Aqui estão algumas coisas que você pode fazer para resolver esse problema:

  1. Verifique se os valores que você está passando para a função editora.salvar() em seu teste correspondem ao que o teste espera. Por exemplo, você pode querer passar "São Paulo" para o campo "cidade" em vez de "Sao Paulo", "cdc@com" para "email" em vez de "c@c.com", e "cdc" para "nome" em vez de "CDC".

  2. No seu teste, você está usando expect.any(Number) para o campo "id". Isso significa que o teste espera que o "id" seja qualquer número. No entanto, o valor que está sendo retornado é 10. Se você quer que o "id" seja especificamente 10, você pode alterar o teste para esperar 10 em vez de expect.any(Number). O mesmo vale para os campos "created_at" e "updated_at".

Espero que essas sugestões ajudem a resolver o problema. Lembre-se, a chave para a resolução de problemas de teste é garantir que o que o teste espera e o que está sendo retornado pela função que está sendo testada correspondam exatamente.

Espero ter ajudado e bons estudos!