問題タブ [go-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - テストファイルで定義されたインターフェイスをモックする: インターフェイス "未定義"?
これは最小限の例で再現を試みたバグですが、これまでのところ成功していません。Go モジュールは次のようになります。
wherehandler.goは空 (含むpackage handlerのみ) でhandler_test.goあり、Handlerインターフェース定義 (Go の と同じhttp.Handler) とプレースホルダー テストを含みます。
インターフェイスを実装し、次を使用して生成さmock_handler.goれる構造体が含まれています。MockHandlerHandlermoq
を生成するために、最初にinをmock_handler.go定義してから、ディレクトリでコマンドを実行しましたHandlerhandler.gohandler
その後、テストにのみ使用することを意図しているため、Handlerインターフェイス定義をに移動しました。handler_test.go
go testこの簡単な例では、ルート ディレクトリでパッケージ リスト モードで実行できます。
私の「実際の」モジュールには、次のような同様の構造があります。
インターフェイスは、単純化されたモジュールとHandlerまったく同じ方法で定義されます。次のように始まります:ensure_license_test.gohandler_test.goensure_license_test.go
mock_handler.gomock_handler.goまた、単純化されたモジュールとまったく同じです (パッケージ名を除く)。
しかしgo test ./...、「実際の」モジュールのルート ディレクトリで実行すると、次のundefinedエラーが発生しますHandler。
奇妙なことに、vppパッケージ内からこれを実行すると、次のようになります。
最初の例のように、ルート ディレクトリからパッケージ リスト モードで実行したときにgo testの定義を定義できない理由は何でしょうか?Handler