Maison >développement back-end >Golang >Pourquoi Sqlmock ne parvient-il pas à correspondre à ma requête malgré une sortie identique dans le journal ?
Lors de la tentative de correspondance avec une requête dans un test Gorm à l'aide de sqlmock, les éléments suivants une erreur est rencontrée :
(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"
Le problème provient de l'utilisation de l'expression rationnelle comme outil de correspondance de requêtes sqlmock. Par défaut, sqlmock utilise un outil de correspondance de requêtes à égalité stricte, qui nécessite une correspondance exacte entre la requête réelle et le modèle attendu.
Pour résoudre ce problème, utilisez l'option QueryMatcherEqual pour remplacer l'outil de correspondance de requêtes par défaut :
QueryMatcherOption(sqlmock.QueryMatcherEqual)
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!