問題タブ [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.

0 投票する
1 に答える
244 参照

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