Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?

Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?

DDD
DDDasal
2024-12-20 17:52:10645semak imbas

How to Mock Struct Methods in Go Test Cases Without Interfaces?

Kaedah Struktur Mengejek dalam Kes Ujian Go

Dalam Go, panggilan kaedah mengejek sesuatu struct boleh dicapai tanpa memasukkan antara muka ke dalam kod sumber . Begini caranya:

Mengejek Struktur dan Kaedah Contoh

Pertimbangkan struct dan kaedah berikut:

type A struct {}

func (a *A) perfom(string){
...
...
..
}

Mengejek dalam Kes Ujian

Untuk mengejek kaedah pelaksanaan untuk ujian kes:

  1. Buat Antara Muka Olok-olok: Tentukan antara muka yang mewakili kaedah untuk dipermainkan.
type Performer interface {
    perform(string)
}
  1. Buat Olok-olok dan Pelaksanaan Sebenar: Laksanakan antara muka untuk kedua-dua olok-olok dan pelaksanaan sebenar struct.
type AMock struct {}

func (a *AMock) perform(string) {
    // Mocked behavior
}

type A struct {}

func (a *A) perform(string) {
    // Real implementation
}
  1. Gunakan Suntikan Ketergantungan: Lulus pelaksanaan yang dipermainkan atau sebenar sebagai hujah kepada fungsi yang sedang diuji.
func invoke(url string, p Performer) {
    out := p.perfom(url)
    ...
    ...
}
  1. Suntikan Mock dalam Ujian: Dalam kes ujian anda, suntikan pelaksanaan olok-olok ke dalam fungsi invoke.
func TestInvokeWithMock(t *testing.T) {
    var amok = &AMock{}
    invoke("url", amok)
    // Verify mock behavior (e.g., assert it was called with the correct argument)
}
  1. Inject Pelaksanaan Nyata dalam Kod Pengeluaran: Dalam kod pengeluaran anda, masukkan pelaksanaan sebenar struct ke dalam invoke fungsi.
func TestInvokeWithReal(t *testing.T) {
    var a = &A{}
    invoke("url", a)
    // No need for verification since it's the real implementation
}

Lain-lain Pilihan

Perpustakaan seperti [testify/mock](https://godoc.org/github.com/stretchr/testify/mock) menyediakan keupayaan mengejek yang lebih mantap, membolehkan anda mengawal tingkah laku olok-olok dan sahkan panggilan kaedah.

Atas ialah kandungan terperinci Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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