Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menjadikan satu objek contoh tersedia untuk semua ujian?

Bagaimana untuk menjadikan satu objek contoh tersedia untuk semua ujian?

PHPz
PHPzke hadapan
2024-02-15 17:27:111025semak imbas

Bagaimana untuk menjadikan satu objek contoh tersedia untuk semua ujian?

editor php Yuzai akan memperkenalkan kepada anda cara membuat objek contoh tersedia untuk digunakan dalam semua ujian. Apabila melakukan ujian unit, kita selalunya perlu mencipta objek contoh dan menggunakannya semula dalam berbilang kes ujian. Untuk mengelakkan masalah mencipta objek berulang kali, kita boleh mencipta objek contoh sebelum ujian bermula dan menyimpannya sebagai harta kelas dengan menggunakan kaedah setUp(). Dengan cara ini, kita boleh mengakses objek contoh ini dalam semua kaedah ujian, dengan itu meningkatkan kebolehgunaan semula kod dan kecekapan ujian. Seterusnya, mari kita lihat kaedah pelaksanaan khusus.

Kandungan soalan

Saya sedang menulis ujian komponen untuk perkhidmatan http. Saya mempunyai kelas pelari ujian yang mengandungi beberapa struktur berguna dan fungsi yang dikongsi (terutamanya "membuat panggilan http" dan "membandingkan struktur json"). Kelas pelari ujian perlu mempunyai domain yang diekstrak daripada envvars untuk menghantar panggilan http. Daripada mendapatkan domain daripada pembolehubah persekitaran setiap kali saya membuat panggilan http, saya lebih suka menghuraikannya sekali dan menetapkannya dalam contoh kelas pelari ujian dan kemudian menyediakan contoh itu untuk semua fungsi ujian saya.

Andaikan tandatangan yang dijangkakan bagi fungsi ujian ialah func TestXxx(t *testing.T) {...} Bagaimanakah saya boleh menyediakan contoh ini untuk ujian saya?

Kod:

  • main.go - Gunakan TestMain untuk mendapatkan domain daripada envvars dan buat contoh kelas pelari ujian
  • testrunner.go - Kelas pembantu yang membuat panggilan http dan mengesahkan keputusan lebih mudah
  • tests.go - ujian sebenar yang dijalankan. Saya menukarnya untuk menggunakan perpustakaan ujian golang, tetapi anda boleh melihat bahawa pada masa ini ia memerlukan parameter (contoh pelari ujian)

Penyelesaian

Gunakan pembolehubah peringkat pakej untuk menyimpan nilai. Mulakan nilai dalam fungsi pengakses. Gunakan sync.Once untuk memastikan permulaan selesai sekali.

type Helper struct {
    message string
}

var (
    helper     *Helper
    helperOnce sync.Once
)

func getHelper() *Helper {
    helperOnce.Do(func() {
        helper = &Helper{"Hello"}
    })
    return helper
}

func TestFirst(t *testing.T) {
    h := getHelper()
    t.Log(h.message)
}

func TestSecond(t *testing.T) {
    h := getHelper()
    t.Log(h.message)
}

https://www.php.cn/link/50d758cc9ab8bb51177b071d370caac2

Atas ialah kandungan terperinci Bagaimana untuk menjadikan satu objek contoh tersedia untuk semua 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
Artikel sebelumnya:fungsi http goFiberArtikel seterusnya:fungsi http goFiber