Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memanggil fungsi 'menegaskan' daripada fungsi bukan ujian?

Bagaimana untuk memanggil fungsi 'menegaskan' daripada fungsi bukan ujian?

WBOY
WBOYke hadapan
2024-02-10 10:30:10526semak imbas

Bagaimana untuk memanggil fungsi menegaskan daripada fungsi bukan ujian?

Editor PHP Strawberry membawakan anda artikel tentang cara memanggil fungsi "assert" daripada fungsi bukan ujian. Dalam PHP, kami biasanya menggunakan fungsi "assert" untuk menulis kes ujian, tetapi kadangkala kami mahu menggunakannya dalam fungsi bukan ujian juga. Artikel ini akan memperkenalkan secara terperinci langkah dan langkah berjaga-jaga tentang cara memanggil fungsi "assert" dalam fungsi bukan ujian untuk membantu pembaca memahami dan menggunakan fungsi ini dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, anda akan memperoleh pengetahuan dan petua yang berharga daripada artikel ini. Mari kita meneroka bersama-sama!

Kandungan soalan

Soalan ini serupa dengan penegasan dalam fungsi bukan ujian dalam Go, tetapi saya mahu memanggil assert.ElementsMatch daripada fungsi bukan ujian.

Bagaimana untuk membuat instantiat objek testing.T?

Fungsi akhirnya akan dipanggil daripada main yang dikonfigurasikan dengan bendera supaya ia tidak boleh hanya menjadi ujian.

Konteks: Kami sedang melakukan pemindahan data daripada beberapa pangkalan data sumber kepada pangkalan data sasaran. Bahagian pertama migrasi adalah untuk menyalin data daripada sumber ke jadual simpan sasaran. Bahagian kedua (dan di sinilah assert.ElementsMatch 发挥作用的地方)是查看保存表和通用表有何不同 - 我们希望尝试通过数据迁移捕获不可预见的情况(例如,某些日期的格式可能不同或错误)身份证号码已复制)。第三部分是,一旦保存表数据经过审查,将其复制到通用表中。这一切听起来有点过于复杂,但这可能是因为当前正在使用源数据库和目标通用数据库。

解决方法

您不需要 testing.T berperanan) adalah untuk melihat cara jadual yang disimpan berbeza daripada jadual generik - kami ingin cuba menangkap situasi yang tidak dijangka dengan pemindahan data (cth. beberapa tarikh mungkin diformatkan secara berbeza atau tidak betul) nombor ID disalin). Bahagian ketiga ialah, setelah data jadual simpan disemak, salinnya ke dalam jadual generik. Ini semua kedengaran agak rumit, tetapi itu mungkin kerana anda sedang menggunakan pangkalan data sumber dan pangkalan data universal sasaran.

Penyelesaianassert.ElementsMatch 函数采用 assert.TestingT 作为其参数,这是一个具有单一方法的接口。因此,您可以简单地定义该接口的自定义实现,该实现可以使用该方法执行您喜欢的任何操作,并将该自定义实现的实例传递给 assert.ElementsMatchAnda tidak memerlukan contoh

.

🎜🎜 Fungsi menggunakan assert.TestingT Sebagai parameternya, ini ialah antara muka dengan satu kaedah. Oleh itu, anda hanya boleh mentakrifkan pelaksanaan tersuai antara muka yang boleh melakukan apa sahaja yang anda suka menggunakan kaedah tersebut dan menghantar contoh pelaksanaan tersuai itu kepada 🎜. 🎜 🎜Contohnya: 🎜
type testingT struct{}

func (testingT) Errorf(format string, args ...interface{}) {
    fmt.Printf(format, args...)
}

// ...

t := new(testingT)
if assert.ElementsMatch(t, listA, listB) {
    // ...
}

Atas ialah kandungan terperinci Bagaimana untuk memanggil fungsi 'menegaskan' daripada fungsi bukan ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam