私がしたいことは以下のようです。
- HTTPリクエストを送るメソッドがあるが、testでは時間がかかってしまうためモックオブジェクトを使いたい。
- その際にinterface型でうまくできるようなのですが、どのようにしたらいいのでしょうか?
以下のようなメソッドをテストにしたいのです。
go
1type client struct {} 2 3func (c *client) Send() bool{ 4 //HTTPリクエストで処理 5 // 真偽値を返す 6}
どのようにしたらいいのでしょうか?
go
1type client interface{ 2 Send() bool 3} 4 5func New() client { 6 return &fakeClient 7} 8 9func (f *fakeClient) Send() bool { 10 // モックなのでただ真偽値を返す 11}
このようにしてあたかも本物みたいに
go
1client := NewFake() 2client.Send()
ぐらいしかないですか?僕としてはあたかも本番コードと同じようにテストを書きたいです。
また、このモックオブジェクトの作り方が正しいとしても
go
1func New() client { 2 return &fakeClient 3}
でinterfaceとして本番コードと同じように書けるくらいのメリットしかありませんよね?
たとえば本番コードが更に複雑なメソッドがあったら、モックオブジェクトも同じように実装できるか不安で「使うメリットがあるのか」と思ってしまいます。
どのようにすればいいテストがかけるでしょうか?
HTTPリクエストだけでなく、もっと処理に時間がかかるテストがモックオブジェクトで書きたいのです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/28 07:24
2017/12/29 14:41