Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Jest dan Redis (masalah pengujian unit dengan cache database)

Masalah dengan pengujian unit (Jest) dan cache database (Redis)

Hai teman-teman, saya akan mengomentari masalah, yang relatif mudah diselesaikan, yang telah saya lakukan pengujian unit (menggunakan Jest) dan dengan cache bank (menggunakan Redis).

Singkatnya, masalahnya adalah kadang-kadang tes yang diberikan lulus dan di lain waktu tidak. Bagaimana jika saya mengujinya secara terpisah juga lulus.

Saya langsung berasumsi bahwa itu adalah cache Redis, karena ini adalah satu-satunya hal yang baru dan berbeda dari yang biasa saya lakukan.

Kemudian saya memikirkan beberapa solusi yang mungkin:

  1. Ubah urutan pengujian yang dideklarasikan, sehingga urutan eksekusi juga akan diubah dan pengujian dengan cache hanya akan dieksekusi terakhir (ini berhasil tetapi tidak menyelesaikan masalah di akarnya)
  2. Ide lain datang dari Led, yang menyarankan untuk mengubah CPF (yang merupakan bagian dari muatan UseCase yang akan diuji) ke yang berbeda dari apa yang telah digunakan dalam pengujian sebelumnya (berhasil tetapi juga tidak menyelesaikan masalah akar masalah )
  3. Selidiki sedikit lebih banyak dan pahami mengapa ini terjadi (pecahkan masalah di akarnya lol)

Jadi melakukan pencarian di Google orang tua saya menemukan lebih banyak tentang masalah ini. Saya menemukan bahwa perlu untuk menghancurkan/mengatur ulang semua tiruan sebelum tes berikutnya dimulai.

Solusi paling sederhana dan paling mudah adalah menggunakan 'resetAllMocks' di dalam 'beforeEach' :

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

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

*Bisa juga 'afterEach', efeknya akan sama.

Dengan begitu, semua yang telah di-cache oleh Redis pada pengujian sebelumnya tidak akan tersedia lagi untuk pengujian berikutnya, sehingga semuanya akan berjalan "terisolasi" satu sama lain.

Akhirnya semua berhasil :

Satu catatan, saya mencoba menggunakan 'jest.clearAllMocks() ' tetapi tidak berhasil dan saya masih tidak tahu mengapa, segera saya akan meneliti lebih lanjut dan jika saya berhasil, saya akan memposting posting lain di sini.*

Tautan yang saya temukan pada subjek:

  • 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#jestresetallmock

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah saya menggunakan Tornado+ Seledri+ RabbitMQ + Redis?

  2. menangani perubahan ruang nama selama deserialisasi JSON String

  3. Cara Menggunakan Redis Dengan Python

  4. Mandor segera diberhentikan

  5. Tidak dapat terhubung ke Redis di 127.0.0.1:6379:Koneksi ditolak