snapshot testingのライブラリを書いた #go

書いた。

github.com

なぜ書いたか

snapshot testingのライブラリを使ってライブラリを作ろうとしていたが
いまいち使い勝手が合わなかったので、機能を落としたものを作った。

試したのは以下の2つだが、goldieのほうが挙動としては近かったが
使い方には合わないかなと思って小さいライブラリを書いてみた。

使い方

以下のような形で、snapshotに追記できるようになっている。
これは、順序のあるデータを記録できるようにこうしている。
(が、Snapshotという関数は変な気もしてきたが気にしないことにする)

func TestSnapshot(t *testing.T) {
	s := New()
	_ = s.Snapshot("xxx")
	_ = s.Snapshot("xxx")
	_ = s.Snapshot("xxxy")
	s.Assert(t)
}

snapshotとしては以下のようなファイルが生成される。

xxx
xxx
xxxy

io.Writerのインターフェースも実装しておいた。

func TestCanUseAsIoWriter(t *testing.T) {
	s := New()
	b := bytes.NewBufferString("test")
	_, _ = io.Copy(s, b)
	s.Assert(t)
}