Adakah yang bisa menjelaskan apa yang dilakukan oleh anotasi @magentoDbIsolation untuk tes integrasi?

9

Melihat melalui tes integrasi yang ditulis untuk modul inti, saya melihat banyak contoh penjelasan @magentoDbIsolation enabledmuncul di atas fungsi tes.

Tidak disebutkan tentang ini di mana pun dalam dokumentasi MTF, dan bahkan setelah melihat Magento\TestFramework\Annotation\DbIsolationsaya masih belum jelas tujuannya.

Adakah yang bisa memberikan wawasan? Terima kasih.

brendanmckeown
sumber

Jawaban:

17

Jika penjelasan ini ditentukan, transaksi DB akan dimulai sebelum pengujian dan dibatalkan setelahnya. Ini dapat membantu jika tidak ada perlengkapan DB yang digunakan dan sesuatu disimpan ke DB dalam pengujian. Catatan yang @magentoDataFixturejuga membungkus tes dalam transaksi sehingga tidak perlu menggunakan kedua penjelasan secara bersamaan.
Dan hanya demi kelengkapan, menetapkan @magentoDbIsolation disabledhanya berguna jika @magentoDbIsolation enabledditentukan pada kelas tes.

Alex Paliarush
sumber
2

Anotasi @magentoDbIsolationdigunakan dalam tes integrasi untuk mengisolasi modifikasi DB yang dibuat oleh tes. Dengan kata lain jika Anda menjalankan tes Anda dan membuat beberapa perubahan pada db dan selama pengujian dieksekusi Anda meminta data ini dari db di sesi lain:

  • dengan @magentoDbIsolation enabledAnda tidak akan mendapatkan apa-apa, karena data terisolasi dalam transaksi.
  • dengan @magentoDbIsolation disabledAnda akan mendapatkan data, karena data tidak terisolasi.
  • tanpa anotasi, tes integrasi dijalankan dalam mode non-terisolasi.

imho, untuk mengubah data db lebih baik menggunakan anotasi @magentoDataFixture, yang menggunakan isolasi data secara default.

Arkadii Chyzhov
sumber