Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Unit Berkesan?

Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Unit Berkesan?

Linda Hamilton
Lepaskan: 2024-12-29 20:51:13
asal
971 orang telah melayarinya

How Can I Mock Imported Functions in Go for Effective Unit Testing?

Mengejek Fungsi Import dalam Kaedah Bergantung kepada Pakej

Apabila menulis ujian untuk kaedah yang bergantung pada fungsi yang diimport daripada pakej luaran, ejekan boleh menjadi perlu untuk mengasingkan ujian daripada pelaksanaan sebenar fungsi yang diimport. Dalam Go, ini boleh dicapai dengan pemfaktoran semula yang mudah.

Pertimbangkan kaedah berikut yang mengimport dan menggunakan fungsi daripada pakej x.y.z:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}
Salin selepas log masuk

Untuk mengejek SomeFunc(), cipta pembolehubah zSomeFunc jenis fungsi, dimulakan dengan fungsi yang diimport:

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}
Salin selepas log masuk

Dalam ujian, anda boleh tetapkan fungsi berbeza kepada zSomeFunc, satu yang ditakrifkan dalam suite ujian itu sendiri, untuk memanipulasi tingkah laku seperti yang diingini:

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}
Salin selepas log masuk

Pendekatan ini membolehkan anda mengejek fungsi yang diimport daripada pakej lain dan mengawal kelakuannya semasa ujian, memudahkan pengasingan dan pengesahan kod anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Unit Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan