Di Golang, kaedah untuk menguji fungsi termasuk ujian unit (mengasingkan fungsi melalui pakej ujian), ujian integrasi (mengesahkan interaksi antara fungsi) dan ujian Mock (menggunakan rangka kerja Mock untuk mengasingkan fungsi). Ujian unit mengesahkan kelakuan yang dijangkakan fungsi dengan menulis fungsi ujian unit. Ujian integrasi mengesahkan interaksi antara fungsi tetapi memerlukan panggilan ke kebergantungan sebenar. Ujian olok-olok mencipta pelaksanaan alternatif (Mocks) kebergantungan, mengasingkan fungsi untuk ujian dan mengelakkan pergantungan pada kebergantungan sebenar boleh dibuat dengan mudah melalui rangka kerja Mock.
Dalam pembangunan Golang, ujian adalah bahagian penting untuk memastikan kualiti dan kebolehpercayaan kod. Artikel ini akan merangkumi pelbagai cara untuk menguji fungsi dalam Golang dan mengendalikan kebergantungan menggunakan kaedah Mock.
Ujian unit ialah ujian yang mengasingkan fungsi dan mengesahkan kelakuan yang dijangkakan. Untuk menulis ujian unit, anda boleh menggunakan pakej testing
daripada pustaka standard Go. testing
包。
import "testing" func TestSum(t *testing.T) { result := sum(2, 3) if result != 5 { t.Errorf("Expected 5, got %d", result) } }
集成测试验证多个函数之间的交互。它们通常涉及调用真正的依赖项。
import ( "io/ioutil" "net/http" "testing" ) func TestHandleRequest(t *testing.T) { req, err := http.NewRequest("GET", "/", nil) if err != nil { t.Fatal(err) } w := ioutil.Discard handleRequest(w, req) // 调用要测试的函数 // 验证响应 ... }
Mock 测试通过创建依赖项的替代实现来隔离函数进行测试。这允许在不依赖实际依赖项的情况下测试函数的行为。
使用 testify/mock
import ( "testing" "github.com/stretchr/testify/mock" ) type FooMock struct { mock.Mock } func (m *FooMock) Bar() int { args := m.Called() return args.Int(0) } // 用例 func TestBaz(t *testing.T) { fooMock := new(FooMock) fooMock.On("Bar").Return(10) // 配置 Mock 行为 result := baz(fooMock) fooMock.AssertExpectations(t) // 验证 Mock 行为是否已达成预期 if result != 10 { t.Errorf("Expected 10, got %d", result) } }
beri keterangan/olok-olok
untuk membuat olok-olok dengan mudah. 🎜rreeeeAtas ialah kandungan terperinci Ujian fungsi Golang dan kaedah Mock. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!