2017-03-11 9 views
2

私はGoの初心者です。ゴランテスト:再利用可能なモックをどこに保管しますか?

ユニットテストの正しい構成方法について教えてください。例えば、私の構造体の依存関係を模擬したいのであれば、いくつかのインタフェースを実装するモックの依存関係を作成する必要があります。

このモックはどこに作成すればよいですか?同じテストファイルで作成する必要がありますか?しかし、もし私が別のテストでそれを必要とすればどうしますか? Goでは、同じパッケージの2つの異なるファイルに同じ名前の構造体(UserServiceMockなど)を定義することはできません。そして、このモック構造体を定義する最も良い場所は何ですか?

そして別の質問です。私はこの種のモックを自分で実装すべきか、それを可能にするいくつかのライブラリ/ツールがありますか?

+1

同じ実装を複数のファイルに配置する必要があるのはなぜですか?何かがテストのためだけに使用されている場合は、それを_test.goファイルに入れます。 – JimB

答えて

0

モックパッケージに私のモックを格納するので、私はそれらをさまざまなテストパッケージから呼び出すことができ、テストでそのパッケージ名を使用して依存関係を模倣していることを示します。たとえば:

mock.UserService 

あなたはジェネレータを作成したり、私もこの問題に直面し、私は別のファイルでの宣言とともに、インターフェースのモックを置くことによってそれを解決しGoMock

+0

アプリケーションの実際のパッケージを模倣していますか? * _test.goファイルに保存されていますか? – RhinoLarva

+0

私のアプリケーションで作成したパッケージです –

0

を使用することができます。

mockery -dir=service -all -inpkg 

私はそれらを生成するために嘲笑を使用しました。これは同じフォルダにモックを作成します。上記のコマンドに従って、サービスディレクトリ内に存在する各インタフェースごとに別々のファイルを生成します。例えば:mock_MyInterface.go

-inpkgフラグを使用しないと、デフォルトのフォルダmocksにモックが作成されますが、モックされた実装ではプレフィックスが追加されないため、ユニットテストでモックパッケージをインポートすると問題が発生します。同じ名前のモックと元の実装のために競合します。

関連する問題