問題タブ [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
れる構造体が含まれています。MockHandler
Handler
moq
を生成するために、最初にinをmock_handler.go
定義してから、ディレクトリでコマンドを実行しましたHandler
handler.go
handler
その後、テストにのみ使用することを意図しているため、Handler
インターフェイス定義をに移動しました。handler_test.go
go test
この簡単な例では、ルート ディレクトリでパッケージ リスト モードで実行できます。
私の「実際の」モジュールには、次のような同様の構造があります。
インターフェイスは、単純化されたモジュールとHandler
まったく同じ方法で定義されます。次のように始まります:ensure_license_test.go
handler_test.go
ensure_license_test.go
mock_handler.go
mock_handler.go
また、単純化されたモジュールとまったく同じです (パッケージ名を除く)。
しかしgo test ./...
、「実際の」モジュールのルート ディレクトリで実行すると、次のundefined
エラーが発生しますHandler
。
奇妙なことに、vpp
パッケージ内からこれを実行すると、次のようになります。
最初の例のように、ルート ディレクトリからパッケージ リスト モードで実行したときにgo test
の定義を定義できない理由は何でしょうか?Handler