Menggunakan rangka kerja Mocking untuk ujian unit dalam Go boleh menumpukan pada menguji komponen individu dengan mengasingkan kebergantungan, meningkatkan kebolehpercayaan dan kemudahan penyelenggaraan. Langkah termasuk: Memasang rangka kerja mengejek pihak ketiga seperti Gomock atau Mockery. Cipta objek Mock dan tentukan tingkah laku kaedah antara muka. Tetapkan tingkah laku Olok-olok dan gunakan EXPECT untuk merekodkan panggilan jangkaan Olok-olok. Gunakan objek Mock untuk menulis ujian unit untuk mengesahkan kelakuan fungsi. Gunakan ctrl.Finish() pada akhir ujian untuk mengesahkan bahawa jangkaan Mock dipenuhi.
Cara menggunakan rangka kerja Mocking untuk ujian unit di Golang
Pengenalan
Ujian unit adalah amalan penting untuk memastikan kod berfungsi seperti yang diharapkan. Dalam Go, objek olok-olok membenarkan pembangun mengasingkan kebergantungan untuk menumpukan pada menguji komponen individu.
Memasang dependencies
Untuk Gomock, gunakan arahan berikut:
go get github.com/golang/mock/gomock
Buat objek Olok-olok
Gunakan gomock.NewController
untuk mencipta Pengawal: gomock.NewController
创建一个 Controller:
func TestUserService(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() }
*使用 gomock.MockRecorder
生成 Mock 对象:
mockUserRepo := gomock.NewMockUserRepository(ctrl)
设置 Mock 行为
使用 EXPECT
录制 Mock 期望调用:
mockUserRepo.EXPECT().GetUser(1).Return(user, nil)
实战案例
考虑一个 UserService,它依赖于UserRepository。我们编写一个单元测试来确保 GetUser 返回正确的用户:
func TestGetUser(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockUserRepo := gomock.NewMockUserRepository(ctrl) userService := NewUserService(mockUserRepo) mockUserRepo.EXPECT().GetUser(1).Return(user, nil) foundUser, err := userService.GetUser(1) if err != nil { t.Errorf("GetUser() failed: %v", err) } if foundUser != user { t.Errorf("GetUser() returned incorrect user") } }
验证 Mock
在测试结束时使用 ctrl.Finish()
defer ctrl.Finish()
gomock.MockRecorder
untuk menjana objek Mock: rrreee
ctrl.Finish()
pada akhir ujian untuk mengesahkan bahawa jangkaan Mock adalah bertemu: 🎜rrreee🎜 🎜🎜🎜 Kelebihan 🎜🎜🎜🎜🎜Asingkan kebergantungan: 🎜Olok-olok mengasingkan kebergantungan dalam kod ujian, membenarkan fokus pada satu komponen. 🎜🎜🎜Tingkatkan kebolehpercayaan: 🎜Tingkatkan kebolehpercayaan ujian dengan mentakrif dan mengesahkan tingkah laku Olok-olok dengan ketat. 🎜🎜🎜Mudah diselenggara: 🎜Objek olok-olok mudah diselenggara dan dikemas kini, mencerminkan perubahan dalam logik perniagaan. 🎜🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan rangka kerja mengejek untuk ujian unit di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!