Go 測試案例中結構體的模擬方法呼叫
問題:
程式碼範例:
type A struct {} func (a *A) perfom(string){ ... ... .. } var s := A{} func invoke(url string){ out := s.perfom(url) ... ... }
答案:
要模擬結構體的方法調用,一方法是使用模擬對象。
使用 Mock 的解決方案物件:
範例程式碼:
type Performer interface { perform() } type A struct {} func (a *A) perform() { fmt.Println("real method") } type AMock struct {} func (a *AMock) perform () { fmt.Println("mocked method") } func caller(p Performer) { p.perform() }
在測試案例中,將模擬實作注入到呼叫函數中:
func TestCallerMock(t *testing.T) { mock := &AMock{} caller(mock) }
在真正的程式碼中,將真正的實作注入到invoke函數中:
func RealInvoke(url string) { a := &A{} out := a.perform(url) }
以上是如何在沒有介面的 Go 測試中模擬結構方法呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!