私はGithub APIのクライアントとして動作するプログラムを作成しています。私はhttps://github.com/google/go-githubを使ってAPIにアクセスします。私は、引数の1つとしてgithub.Client
を受け取り、それを使ってプル要求からコミットを取得する関数を持っています。私はいくつかの偽のデータでこの関数をテストしたい。構造体をモックする方法フィールドに直接アクセスする場合
ここの記事:https://nathanleclaire.com/blog/2015/10/10/interfaces-and-composition-for-effective-unit-testing-in-golang/私は、githubクライアントで実装されるインターフェイスを作成し、テストではそれを実装するモックを作成する必要があります。私の問題はgo-github
がプル要求を取得するには、次のセマンティクスを使用していること、である:
prs, resp, err := client.PullRequests.List("user", "repo", opt)
インタフェースはしかし、あなたが実装されるべきである方法ではなくフィールドを指定することができます。だから、私はgithub.Clientオブジェクトを模倣して、上記のセマンティクスで使用することができますか?
フィールドをエクスポートしたものをモックする必要はありません。自分自身をgithub.Clientにしてください。 – Volker
しかし、私は本当のgithubを望んでいません。APIに接続するクライアント。静的なデータを返すものが欲しい。 – zefciu
これを実現する1つの方法は、独自のインターフェイスを宣言することです。次に、2つの異なる構造体で実装します。最初のものはgithub APIを呼び出すだけで、もう1つは偽のものです。 – jnmoal