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

Comment appeler la fonction « assert » à partir d'une fonction non-test ?

WBOY
Libérer: 2024-02-10 10:30:10
avant
493 Les gens l'ont consulté

Comment appeler la fonction « assert » à partir dune fonction non-test ?

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 !

Contenu de la question

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.ElementsMatchVous 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) {
    // ...
}
Copier après la connexion

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!