Go テスト ケースでの構造体メソッドのモック化
Go では、ソース コードにインターフェイスを導入せずに、構造体のメソッド呼び出しをモック化できます。 。方法は次のとおりです:
サンプルの構造体とメソッドをモックする
次の構造体とメソッドを考えてみましょう:
type A struct {} func (a *A) perfom(string){ ... ... .. }
テスト ケースでのモック
テスト用に Perform メソッドをモックするにはケース:
type Performer interface { perform(string) }
type AMock struct {} func (a *AMock) perform(string) { // Mocked behavior } type A struct {} func (a *A) perform(string) { // Real implementation }
func invoke(url string, p Performer) { out := p.perfom(url) ... ... }
func TestInvokeWithMock(t *testing.T) { var amok = &AMock{} invoke("url", amok) // Verify mock behavior (e.g., assert it was called with the correct argument) }
func TestInvokeWithReal(t *testing.T) { var a = &A{} invoke("url", a) // No need for verification since it's the real implementation }
その他のオプション
[testify/mock] のようなライブラリ(https://godoc.org/github.com/stretchr/) testify/mock) は、さらに堅牢なモック機能を提供し、モックの動作を制御し、メソッド呼び出しを検証できるようにします。
以上がインターフェイスを使用せずに Go テストケースで構造体メソッドをモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。