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