Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengejek Panggilan Kaedah Struktur dalam Ujian Go Tanpa Menggunakan Antara Muka?

Bagaimana untuk mengejek Panggilan Kaedah Struktur dalam Ujian Go Tanpa Menggunakan Antara Muka?

DDD
DDDasal
2024-12-08 00:09:12733semak imbas

How to Mock Struct Method Calls in Go Tests Without Using Interfaces?

Kaedah Mengejek Panggilan Struktur dalam Kes Ujian Go Tanpa Antara Muka

Dalam Go, tiada persamaan langsung dengan rangka kerja seperti Mockito dan jMock untuk kaedah mengejek panggilan struct. Walau bagaimanapun, terdapat beberapa teknik yang boleh digunakan untuk mencapai tahap ejekan yang sama tanpa memperkenalkan antara muka dalam kod sumber.

Satu pendekatan melibatkan mencipta struct olok-olok yang melaksanakan kaedah yang sama seperti struct asal. Struktur olok-olok kemudiannya boleh disuntik ke dalam fungsi atau kaedah yang perlu diuji, membolehkan anda mengawal tingkah laku dan mengesahkan panggilan.

Pertimbangkan contoh berikut:

type A struct {}

func (a *A) perform(url string){
    // ...
} 

func invoke(s A, url string){
    out := s.perform(url)
    // ...
} 

Untuk mengejek panggilan kaedah perform, anda boleh mencipta struktur olok-olok AMock yang melaksanakan antara muka yang sama seperti A.

type AMock struct {}

func (a *AMock) perform(url string) {
    // mocked implementation
}

Dalam kes ujian anda, anda boleh menyuntik struct olok-olok ke dalam fungsi invoke dan menegaskan tingkah laku yang dijangkakan.

Pendekatan lain ialah menggunakan rangka kerja suntikan kebergantungan seperti testimoni/ mengejek. Rangka kerja ini menyediakan satu set kaedah sambungan yang membolehkan anda mengejek antara muka dan mengesahkan penggunaannya dalam kes ujian anda.

import "github.com/stretchr/testify/mock"

type A struct {}

type AMock struct {
    mock.Mock
}

func (a *AMock) perform(url string){
    a.Called(url)
} 

func invoke(s *A, url string){
    // ...
} 

Dengan menggunakan rangka kerja testimoni/olok-olok, anda boleh membuat olok-olok, mengesahkan panggilan kaedah dengan mudah, dan tetapkan jangkaan untuk kes ujian anda.

Atas ialah kandungan terperinci Bagaimana untuk mengejek Panggilan Kaedah Struktur dalam Ujian Go Tanpa Menggunakan 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