Rumah > pembangunan bahagian belakang > Golang > Mengapa Sqlmock Gagal Memadankan Pertanyaan Saya Walaupun Output Sama dalam Log?

Mengapa Sqlmock Gagal Memadankan Pertanyaan Saya Walaupun Output Sama dalam Log?

Linda Hamilton
Lepaskan: 2024-11-12 16:59:02
asal
261 orang telah melayarinya

Why is Sqlmock Failing to Match My Query Despite Identical Output in the Log?

Sqlmock Tidak Padan Pertanyaan Walaupun Identiti dalam Output Log

Mesej Ralat

Apabila cuba memadankan pertanyaan dalam ujian Gorm menggunakan sqlmock, perkara berikut ralat ditemui:

(path/to/my/project/database.go:263)
[2020-01-08 10:29:40]  Query: could not match actual sql: "SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1" with expected regexp "SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1"
Salin selepas log masuk

Penyelesaian

Isu ini berpunca daripada penggunaan regexp sebagai pemadan pertanyaan sqlmock. Secara lalai, sqlmock menggunakan pemadanan pertanyaan kesamaan yang ketat, yang memerlukan padanan tepat antara pertanyaan sebenar dan corak yang dijangkakan.

Untuk menyelesaikannya, gunakan pilihan QueryMatcherEqual untuk menggantikan pemadan pertanyaan lalai:

QueryMatcherOption(sqlmock.QueryMatcherEqual)
Salin selepas log masuk

Pertimbangan Tambahan

  • Pastikan pertanyaan sqlmock sepadan dengan rentetan pertanyaan sebenar, termasuk mana-mana aksara khas yang mungkin perlu dilepaskan.
  • Jika pertanyaan termasuk nilai literal , gunakan WithArgs() untuk menentukan argumen dan melarikannya seperti yang diperlukan.
  • Jika pertanyaan termasuk fungsi atau keadaan kompleks, gunakan regexp.QuoteMeta() untuk menukarnya kepada ungkapan biasa yang boleh dipadankan oleh sqlmock.

Atas ialah kandungan terperinci Mengapa Sqlmock Gagal Memadankan Pertanyaan Saya Walaupun Output Sama dalam Log?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan