Maison > développement back-end > Golang > le corps du texte

Pourquoi sqlmock ne parvient-il pas à correspondre à ma requête malgré un texte identique ?

Mary-Kate Olsen
Libérer: 2024-11-10 19:00:04
original
623 Les gens l'ont consulté

Why Is sqlmock Failing to Match My Query Despite Identical Text?

sqlmock ne correspond pas à la requête, malgré un texte identique

Message d'erreur :

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"
Copier après la connexion

lors de l'utilisation de sqlmock avec Gorm peut être frustrant. Bien que la sortie du journal affiche des requêtes identiques, la correspondance échoue.

Le problème sous-jacent ici est la différence entre le texte SQL et la syntaxe SQL. Bien que le texte de la requête puisse sembler identique, de petites variations syntaxiques peuvent entraîner des problèmes. Pour résoudre ce problème, assurez-vous que la chaîne de requête attendue dans votre simulation correspond au texte littéral de la requête en cours d'exécution.

Une solution possible consiste à utiliser la fonction regexp.QuoteMeta() pour échapper aux métacaractères de la requête attendue. :

mock.ExpectQuery(regexp.QuoteMeta(`SELECT * FROM "storage_pools" WHERE "storage_pools"."deleted_at" IS NULL AND ((poolid = ?)) ORDER BY "storage_pools"."id" ASC LIMIT 1`))
Copier après la connexion

En plaçant le texte de la requête entre guillemets littéraux, regexp.QuoteMeta() garantit que tous les caractères spéciaux ou métacaractères de la chaîne sont traités littéralement, les empêchant d'interférer avec le processus de correspondance. Cela devrait résoudre le problème et permettre à sqlmock de correspondre correctement à la requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal