https://gopkg.in/olivere/elastic.v2とそれが悪夢であることを証明しようとしています。私は通常gomockを使いますが、depのインターフェースファイルはありません。これについてはどうすればいいですか?依存関係がインターフェイスを公開していないときにGOで依存関係を模擬する最善の方法は
答えて
独自のインターフェイスを作成します。
これは完全である必要はなく、実際に使用する方法だけをカバーする必要もあります。
Bar()
,Baz()
およびのタイプのFoo
があるとします。
そして、あなたはあなたのコードでこれを使用します。
func Frobnicate(f *Foo) err {
if err := f.Bar() error; err != nil {
return err
}
return nil
}
はちょうどあなたの新しいカスタムインターフェイスを使用するようにこれを変更:今すぐ
func Frobnicate(f fooer) err {
// The rest the same as before
:
type barer interface() {
Bar() error
}
は、その後、あなたの関数のシグネチャを更新します独自のfooer
の実装を作成し、嘲笑してください。
モックする必要があるタイプが、メソッドではなくデータを持つ単純な構造体である場合、メソッドはgetter/setterメソッドでラップすることができます。あなたがラッパーを作成することができます
type Foo struct {
Name string
}
:
type FooWrapper struct {
Foo
}
func (w *FooWrapper) Name() string {
return w.Foo.Name
}
今Foo
タイプはモックのためのカスタムインターフェイスを使用してアクセスすることができる。例えば、このタイプを与えられました。
答えとしてマークする必要があります。 –
これは素晴らしいです、あなたはgetter/setterのアイデアを詳しく教えてください。 –
@DanielKobeが更新されました。 – Flimzy
- 1. 依存関係が複雑な場合、どのレベルで依存関係を模擬すべきですか?
- 2. インスツルメンテーションテストでアクティビティ依存関係を模擬する方法
- 3. Goのライブラリ依存関係
- 4. 依存関係の依存関係
- 5. 依存関係のプロパティ依存関係
- 6. Gradle依存関係とGradle依存関係のEclipseの違い
- 7. Masterpass依存関係が他の依存関係と矛盾しています
- 8. node.jsでのテストの依存関係を模擬する方法は?
- 9. Jmockit/Springのmocked依存関係は、依然としてReal依存関係
- 10. 異なるスコープの依存関係内のMaven依存関係
- 11. lddは依存関係の依存関係も示していますか?
- 12. 依存関係の依存関係をダウンロードする
- 13. 依存関係を注入したスーパークラスを模擬する方法
- 14. 依存関係の依存関係へのアクセスを禁止する方法
- 15. npmに依存関係の最新の依存関係が得られないようにするには
- 16. 依存関係と
- 17. 存在しない依存関係sybase
- 18. プレイブックの依存関係と役割の依存関係
- 19. Mavenの依存関係ツリーとPOMの依存関係
- 20. 依存関係
- 21. 依存関係
- 22. maven依存関係からJava 9依存関係を構築する方法
- 23. go:依存関係を定義する方法は?
- 24. mocha.jsを使用した単体テストの依存関係クラスの模擬方法
- 25. は依存関係
- 26. は依存関係
- 27. は依存関係
- 28. go依存関係を保存するには?
- 29. コピー依存関係のときにeclipse-plugin依存関係を除外する方法は?
- 30. Structuremap - 依存関係のある依存関係
パッケージのエクスポートされた機能に対してインターフェースを定義することができます。Goのインターフェースは暗黙的に実装されています**。 – mkopriva
@mkoprivaこれは私がやろうとしてきたことですが、問題は数多くの問題につながるインターフェイスを作成するためにパッケージに作成された構造体を返さなければならないということです –
sepcificallyにはどんな問題がありますか?あなたはそれらの特定の問題の説明であなたの質問を更新してもよろしいですか? – mkopriva