sql >> Databáze >  >> NoSQL >> Redis

Jest a Redis (problém testů jednotek s mezipamětí databáze)

Problém s testy jednotek (Jest) a mezipamětí databáze (Redis)

Čau lidi, rád bych se vyjádřil k relativně jednoduchému problému, který jsem provedl testem jednotek (pomocí Jest) as mezipamětí banky (pomocí Redis).

Stručně řečeno, problém byl v tom, že někdy daný test prošel a jindy ne. Co kdybych to testoval izolovaně, příliš prošlo.

Okamžitě jsem usoudil, že je to mezipaměť Redis, protože to byla jediná věc nová a odlišná od toho, na co jsem byl zvyklý.

Pak mě napadlo několik možných řešení:

  1. Změňte pořadí, ve kterém byly testy deklarovány, takže by se také změnilo pořadí provádění a testy s mezipamětí by se prováděly až jako poslední (to fungovalo, ale problém v kořeni to nevyřešilo)
  2. Další nápad přišel od společnosti Led, která navrhla změnit CPF (který je součástí předmětného užitečného zatížení UseCase, který má být testován) na jiný, než jaký již byl použit v předchozích testech (fungovalo to, ale také to nevyřešilo problém problém u kořene )
  3. Prozkoumejte trochu více a pochopte, proč se to stalo (vyřešte problém v kořenu lol)

Když jsem tedy hledal na Google parent, našel jsem na toto téma více. Zjistil jsem, že před zahájením dalšího testu bylo nutné zničit/resetovat všechny makety.

Nejjednodušším a nejpřímějším řešením bylo použití „resetAllMocks“ uvnitř „před každým“:

 describe(‘Check XPTO Use Case’, () => {
   beforeEach(() => {
     jest.resetAllMocks() // dessa forma aqui
   })

   it(‘should return ….’, async () => {
   // ...
   })
})

*Mohlo to být také „po každém“, mělo by to stejný účinek.

Tímto způsobem by vše, co bylo uloženo do mezipaměti Redis v předchozím testu, již nebylo k dispozici pro příští test, takže by všechny běžely "izolované" od sebe navzájem.

Nakonec vše dopadlo :

Jedna poznámka, zkusil jsem použít 'jest.clearAllMocks() “ ale nefungovalo to a stále nevím proč, brzy prozkoumám více a pokud ano, zveřejním zde další příspěvek.*

Odkazy, které jsem na toto téma našel:

  • https://stackoverflow.com/questions/69869063/how-to-clean-up-reset-redis-mock-in-an-express-jest-test
  • https://jestjs.io/pt-BR/docs/jest-object#jestresetallmocks

  1. MongoDB $toString

  2. chyba analýzy mongoexport JSON

  3. Indexování e-mailů pomocí Cloudera Search a HBase

  4. vrátit dotaz na základě data