L'éditeur PHP Strawberry vous propose un article sur la façon d'appeler la fonction "assert" à partir d'une fonction non-test. En PHP, nous utilisons généralement la fonction "assert" pour écrire des cas de test, mais parfois nous souhaitons également l'utiliser dans des fonctions non-test. Cet article présentera en détail les étapes et les précautions sur la façon d'appeler la fonction « assert » dans les fonctions non-test pour aider les lecteurs à mieux comprendre et utiliser cette fonction. Que vous soyez débutant ou développeur expérimenté, vous obtiendrez de précieuses connaissances et conseils grâce à cet article. Explorons ensemble !
Cette question est similaire aux assertions dans les fonctions non-test dans Go, mais je souhaite appeler assert.ElementsMatch
à partir de la fonction non-test.
Comment instancier un testing.T
objet ?
La fonction sera finalement appelée depuis main
qui est configurée avec des indicateurs donc il ne peut pas s'agir simplement d'un test.
Contexte : Nous effectuons une migration de données d'une base de données source vers une base de données cible. La première partie de la migration consiste à copier les données de la source vers la table de sauvegarde de la cible. La deuxième partie (et c'est là que assert.ElementsMatch
发挥作用的地方)是查看保存表和通用表有何不同 - 我们希望尝试通过数据迁移捕获不可预见的情况(例如,某些日期的格式可能不同或错误)身份证号码已复制)。第三部分是,一旦保存表数据经过审查,将其复制到通用表中。这一切听起来有点过于复杂,但这可能是因为当前正在使用源数据库和目标通用数据库。
您不需要 testing.T
entre en jeu) consiste à voir en quoi le tableau enregistré diffère du tableau générique - nous voulons essayer de capturer les situations imprévues avec la migration des données (par exemple, certaines dates peuvent être formatées différemment ou incorrectement). copié). La troisième partie consiste, une fois les données de la table de sauvegarde examinées, à les copier dans la table commune. Tout cela semble un peu trop complexe, mais c'est probablement parce que les bases de données universelles source et cible sont actuellement utilisées.
Solution de contournementassert.ElementsMatch
函数采用 assert.TestingT
作为其参数,这是一个具有单一方法的接口。因此,您可以简单地定义该接口的自定义实现,该实现可以使用该方法执行您喜欢的任何操作,并将该自定义实现的实例传递给 assert.ElementsMatch
Vous n'avez pas besoin d'une instance de
🎜🎜 La fonction utilise
assert.TestingT
En paramètre, il s'agit d'une interface avec une seule méthode. Vous pouvez donc simplement définir une implémentation personnalisée de l'interface qui peut faire ce que vous voulez en utilisant la méthode, et transmettre une instance de cette implémentation personnalisée à 🎜. 🎜
🎜Par exemple : 🎜
type testingT struct{} func (testingT) Errorf(format string, args ...interface{}) { fmt.Printf(format, args...) } // ... t := new(testingT) if assert.ElementsMatch(t, listA, listB) { // ... }
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!