Go テストケースでの構造体のメソッド呼び出しのモック
問題:
モックの方法ソースにインターフェイスを導入しない Go テスト ケースでの構造体のメソッド呼び出しcode?
コード例:
type A struct {} func (a *A) perfom(string){ ... ... .. } var s := A{} func invoke(url string){ out := s.perfom(url) ... ... }
答え:
構造体のメソッド呼び出しを模擬するには、アプローチは、モック オブジェクトを使用することです。
モックを使用した解決策オブジェクト:
コード例:
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) }
実際のコードでは、実際の実装を呼び出しに挿入します。関数:
func RealInvoke(url string) { a := &A{} out := a.perform(url) }
以上がインターフェイスを使用せずに Go テストで Struct メソッド呼び出しをモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。