$30 off During Our Annual Pro Sale. View Details »

Go で Golden File Test

TOC
November 24, 2022
310

Go で Golden File Test

Let's Go Talk #4 で LT 登壇した際の資料
https://connehito.connpass.com/event/262611/

TOC

November 24, 2022
Tweet

Transcript

  1. 2022/11/09 Let’s Go Talk #4
    TOC
    Go で Golden File Test

    View Slide

  2. - TOC(とっしー)
    - コネヒト株式会社
    - バックエンドエンジニア
    - 主にPHP
    - Go は趣味で勉強中
    自己紹介

    View Slide

  3. - tenntenn さんの主催する Gopher 塾に参加してきました
    - Testing がテーマでテスト全般の講義
    - Golden File Test も扱った
    - PHP でも最近使っていたので興味が沸いた
    LT のモチベーション

    View Slide

  4. - API のレスポンスデータをファイルで保持し、比較するテスト
    - Snapshot Testing とも呼ばれる
    Golden File Test とは
    初回実行
    (or -update)
    目視で出力
    ファイルを確認
    ファイル生成 2回目以降の
    テスト実行
    出力
    比較
    ファイルの
    データと出力
    を比較

    View Slide

  5. ライブラリ色々
    - tenntenn/golden
    - シンプルで扱いやすい印象
    - 最近アップデートされて更新とチェックが同時にできる
    - sebdah/goldie
    - オプションが豊富
    - 2020年からメンテされていない
    - gotestyourself/gotest.tools
    - string, []byte形式に対応

    View Slide

  6. 実際のコード例
    - tenntenn/golden の例
    - 比較やファイル生成してるのは golden.Check の部分だけ
    - 指定した testdata ディレクトリ配下に {name}.golden ファイルを生成する

    View Slide

  7. - 形式としては json で保存されるが、ファイルとしてはテキストファイルで
    認識される
    - json ファイルとして認識するために工夫してるブログも
    - https://khigashigashi.hatenablog.com/entry/2019/04/27/15
    0230 
    - goldie はオプションで解決できたりする
    - goldie.WithNameSuffix(".golden.json"),
    golden ファイルはテキストファイル

    View Slide

  8. - json にしたとして、めっちゃ長いレスポンスを全部目視できる?
    - 人間誰しも見落としするよね
    - 外形は一緒でも中身のロジックの変化はテストできない
    - レスポンス構造を担保したい、とかは使えそう
    - 中身のロジックはユニットテストで守りたい
    - 何をテストしたいのか、で使い所が分かれそう
    Golden File Test は使い所が大事

    View Slide

  9. - tenntenn/golden は json 形式以外(string, []byte, io.Reader,
    encoding.TextMarshaler)も対応
    - txtar 形式(複数のテキストファイルをまとめたもの)とかに対して結構
    使いやすくなっている
    - コマンドラインツールのテストでも使えそうなので使ってみたい
    その他所感

    View Slide