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

Bagaimana untuk menjadikan satu objek contoh tersedia untuk semua ujian?

PHPz
Lepaskan: 2024-02-15 17:27:11
ke hadapan
1086 orang telah melayarinya

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)
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan