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
2022/11/09 Let’s Go Talk #4 TOC Go で Golden File Test
Slide 2
Slide 2 text
- TOC(とっしー) - コネヒト株式会社 - バックエンドエンジニア - 主にPHP - Go は趣味で勉強中 自己紹介
Slide 3
Slide 3 text
- tenntenn さんの主催する Gopher 塾に参加してきました - Testing がテーマでテスト全般の講義 - Golden File Test も扱った - PHP でも最近使っていたので興味が沸いた LT のモチベーション
Slide 4
Slide 4 text
- API のレスポンスデータをファイルで保持し、比較するテスト - Snapshot Testing とも呼ばれる Golden File Test とは 初回実行 (or -update) 目視で出力 ファイルを確認 ファイル生成 2回目以降の テスト実行 出力 比較 ファイルの データと出力 を比較
Slide 5
Slide 5 text
ライブラリ色々 - tenntenn/golden - シンプルで扱いやすい印象 - 最近アップデートされて更新とチェックが同時にできる - sebdah/goldie - オプションが豊富 - 2020年からメンテされていない - gotestyourself/gotest.tools - string, []byte形式に対応
Slide 6
Slide 6 text
実際のコード例 - tenntenn/golden の例 - 比較やファイル生成してるのは golden.Check の部分だけ - 指定した testdata ディレクトリ配下に {name}.golden ファイルを生成する
Slide 7
Slide 7 text
- 形式としては json で保存されるが、ファイルとしてはテキストファイルで 認識される - json ファイルとして認識するために工夫してるブログも - https://khigashigashi.hatenablog.com/entry/2019/04/27/15 0230 - goldie はオプションで解決できたりする - goldie.WithNameSuffix(".golden.json"), golden ファイルはテキストファイル
Slide 8
Slide 8 text
- json にしたとして、めっちゃ長いレスポンスを全部目視できる? - 人間誰しも見落としするよね - 外形は一緒でも中身のロジックの変化はテストできない - レスポンス構造を担保したい、とかは使えそう - 中身のロジックはユニットテストで守りたい - 何をテストしたいのか、で使い所が分かれそう Golden File Test は使い所が大事
Slide 9
Slide 9 text
- tenntenn/golden は json 形式以外(string, []byte, io.Reader, encoding.TextMarshaler)も対応 - txtar 形式(複数のテキストファイルをまとめたもの)とかに対して結構 使いやすくなっている - コマンドラインツールのテストでも使えそうなので使ってみたい その他所感