aws-sdk-go のモックとデータの組み立て

aws-sdk-go にはこういうモックの仕方あるよという感じでこういう記事があります。

雑に言えば各サービスのクライアントの interface 用意しておくのでそれ使えば、という感じ。まぁ自分で用意しても良さそう。インターフェイスが変わったらコンパイル出来なくなるだけだし。

クライアントが返すデータはここでは自前で組み立ててるけど、例えば json なやつとかだったらこんな感じで書ける。

import (
        "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
)

var output SomeOutput
body := strings.NewReader("実際の json のレスポンス")
if err := jsonutil.UnmarshalJson(&outout, body); err != nil {
        // got error 
}

まぁ明らかに private なところを触っているけれど、自前で都合のいいデータを組み立てるよりはなんか実際通信した結果とか使った方がマシって気はするので、こういう方法でも良いかな?という気はしてる。(インターフェイスが変わったらコンパイル出来なくなるだけだし。)