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