Goのinterfaceを使って外部サービスに依存しないテストを書く2018/5/28 Gopher道場#1 LT大会@toshi0607
View Slide
自己紹介● 杉田 寿憲○ Toshinori Sugita○ toshi0607○ toshi0607○ toshi0607● 最近の様子○ Ruby > JavaScript >>> Go >>>>>> C#● 8月にクロアチア旅行することにした
Goで作り直す.gitignore生成コマンド2018/5/14 Gopher道場最終回※https://speakerdeck.com/toshi0607/reinvent-gitignore-command-using-golang
※https://github.com/toshi0607/gigbefore
※https://github.com/toshi0607/gigbeforeafter
今日のお話● release-tweeterというAPIを作った● 作ったきっかけ● 課題と解決策● まとめ
release-tweeterとは?※https://github.com/toshi0607/release-tweeter
release-tweeterとは?※https://github.com/github/release-tweeter
作ったきっかけ● コマンドの次はAPI作ってみたい● リリースのお知らせ(twitter)も自動化したい● AWS Lambda(Go)とAPI Gateway使ってみたい
AWS LambdaのGoサポート※https://twitter.com/awscloud/status/953343724909670400
API GatewayとAWS Lambda
課題CIでテスト回したいけど…
課題テストを回すたびにtweet
前提● ChimeraCoder/anaconda(第三者のtwitter clientライブラリ)利用● URLを差し替えたりはできない(たぶん)● このライブラリも投稿はテストしてない○ 自分にDMするテストはしてる※https://github.com/ChimeraCoder/anaconda
解決策① ● 捨てアカ準備
解決策① ● 捨てアカ準備すいませんなんでもないです
解決策②● ライブラリを使わずに再実装
解決策②● ライブラリを使わずに再実装便利なライブラリ見つけても再実装...
解決策③● 関数だけ差し替える
解決策③● 関数だけ差し替える差し替えたい対象が増えても1つずつ代入...?
解決策④● interfaceを活用して差し替える
解決策④● interfaceを活用して差し替えるinterfaceを満たせば代入可能
ちなみにGitHubでは...
まとめテストでは外部サービスに依存せずモックしましょう
ご清聴ありがとうございました!Goのinterfaceを使って外部サービスに依存しないテストを書く