外部パッケージからインポートされた関数を利用する Go メソッドをテストする場合、効果的なテストのためにこれらの外部関数をモックする必要がある場合があります。 1 つのアプローチは、コードをリファクタリングし、外部関数を直接呼び出す代わりに中間関数呼び出しを導入することです。
この例では、
import x.y.z func abc() { ... v := z.SomeFunc() ... }
タイプ func の新しい変数 zSomeFunc を作成し、外部関数 z.SomeFunc を使用して初期化します。次に、パッケージで z.SomeFunc の代わりに zSomeFunc を呼び出すようにします。
var zSomeFunc = z.SomeFunc func abc() { // ... v := zSomeFunc() // ... }
これで、テストで別の関数を zSomeFunc に割り当てることができます。テストで定義され、事前定義された値を返す関数、または特定のアクションを実行します。これにより、テスト目的で外部関数の動作をモックすることができます。
func TestAbc(t *testing.T) { // Save the original function and restore it at the end of the test. old := zSomeFunc defer func() { zSomeFunc = old }() zSomeFunc = func() int { // Do whatever you want to do and return whatever value you need. return 1 } // Call the tested function. abc() // Test the expected behavior. }
あるいは、x.y.z パッケージのモック実装を作成し、Go Mocking Framework を使用して SomeFunc() 関数を具体的にモックすることもできます。 .
以上が効果的なテストのためにインポートされたパッケージ関数を Go でモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。