haskell-jp / questions #96 at 2021-03-21 18:02:43 +0900

persistent 関連のテストを書いてるんですけど、なんかいい感じに モック テスト用データを作ったりできるテストライブラリってあるんですかね?
Ruby (Rails) とかだと factory_bot とかを使うんですけど、パッと探した感じ、そういうの見つかりませんでした。
factory_botってモックに使うものでしたっけ。テスト用に実際にDBのレコードを作成するライブラリーのような。
あ、はい、モックというかなんというか
テスト用に簡単にデータ作って入れてって感じです、やりたいことは
なるほど。申し訳なくも該当するようなライブラリーは私は知らないです。個別にユーティリティ関数を作るしかなさそう :disappointed:
願わくば、なるべくDBのスキーマに依存しないで、アプリケーションの設計上の言葉でテストにふさわしい状況を作り出す関数を定義して、それをテストでも使いたいところですね。
(持論なんですが、ちょっと分かりづらかったらすみません)
私のYesodアプリケーションのテストのためには地道にinsertしてますね…
結局地道に insert + delete を繰り返す処理を書きました :innocent:
https://github.com/matsubara0507/homelyapp/blob/5bbb518f79ce45e28c5bb145b7a401f837b27ab4/test/Test/Homely/DB.hs#L94-L100
もう少しユースケースが見えてきたら、なんかいい感じに処理を抽象化しても良いかもしれないですが。
同じく欲しいなって思って探した事ありますが、その時は見つからなかったですね。。
その時は、Entity的なものをDefaultのインスタンスにして、lensで書き換えてテストデータを作り、StateMonadを雑に使って作ったデータ管理(参照したり、上書きして新たなテストデータにしたり)しました