Go で外部関数をモックする
外部パッケージに依存する関数をテストする場合、それらの外部関数をモックすることは、分離された信頼性の高い関数を作成するために不可欠です。テスト。次の例を考えてみましょう:
import x.y.z func abc() { ... v := z.SomeFunc() ... }
abc() の単体テストのために z.SomeFunc() をモックできますか?
解決策: リファクタリングとモッキング
はい、z.SomeFunc() のモックは簡単なリファクタリングで可能です。関数型の変数 zSomeFunc を導入し、z.SomeFunc で初期化します。次に、z.SomeFunc() を呼び出す関数内で、代わりに zSomeFunc() を呼び出します。
var zSomeFunc = z.SomeFunc func abc() { // ... v := zSomeFunc() // ... }
テスト中に、目的のテスト動作を返すカスタム関数を zSomeFunc に割り当てます。例:
func TestAbc(t *testing.T) { // Save current function and restore at the end: old := zSomeFunc defer func() { zSomeFunc = old }() zSomeFunc = func() int { // This will be called, do whatever you want to, // return whatever you want to return 1 } // Call the tested function abc() // Check expected behavior }
以上が単体テストのために Go で外部関数をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。