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

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

Linda Hamilton
Lepaskan: 2024-12-18 09:41:10
asal
228 orang telah melayarinya

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

Fungsi Mengejek yang Diimport daripada Pakej dalam Go

Apabila menguji kaedah Go yang menggunakan fungsi yang diimport daripada pakej luaran, fungsi luaran ini mungkin perlu dipermainkan untuk ujian yang berkesan. Satu pendekatan adalah untuk memfaktorkan semula kod dan memperkenalkan panggilan fungsi perantaraan dan bukannya memanggil terus fungsi luaran.

Dalam contoh yang disediakan:

import x.y.z

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

Buat pembolehubah baharu zSomeFunc jenis func dan mulakannya dengan fungsi luaran z.SomeFunc. Kemudian, minta pakej anda memanggil zSomeFunc dan bukannya z.SomeFunc.

var zSomeFunc = z.SomeFunc

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

Kini, dalam ujian anda, anda boleh menetapkan fungsi lain kepada zSomeFunc, fungsi yang ditakrifkan dalam ujian dan mengembalikan nilai yang dipratentukan atau melakukan tindakan tertentu. Ini membolehkan anda mengejek kelakuan fungsi luaran untuk tujuan ujian.

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

    zSomeFunc = func() int {
        // Do whatever you want to do and return whatever value you need.
        return 1
    }

    // Call the tested function.
    abc()

    // Test the expected behavior.
}
Salin selepas log masuk

Sebagai alternatif, anda boleh membuat pelaksanaan olok-olok pakej x.y.z dan menggunakan Rangka Kerja Go Mocking untuk mengejek fungsi SomeFunc() secara khusus .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi Pakej Diimport dalam Go untuk Ujian 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