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"
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)
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!