Herokuに上げているRailsアプリのDBは、最近MongoDBをよく使っている。 MongoHQ、MongoLabなどが500MBの無料プランを提供しているからで、 個人アプリであればこのくらいあれば十分だからだ。
それでMongoDBのテストデータをRailsで作りたくて探してみたところ、 Fabricationというgemがよさげだった。
Personというモデルクラスがあるとして、テストデータは以下のように作る。
app/models/person.rb
1class Person
2 include Mongoid::Document
3 field :name, String
4end
定義ファイルは以下のようなパスに置くと自動で読み込まれる。 test_or_spec/fabricators/*/*_fabricator.rb
例ではこちら。 test/fabricators/person/person_fabricator.rb
1Fabricator(:person) do
2 name 'Tarou'
3end
name属性に対してnameというメソッドが定義されているので、セットする値を渡す。
テストケースからは以下のように呼び出す。 test/models/person_test.rb
1@person = Fabricate(:person)
便利な機能としては、Fabricatorの定義を継承して新たな定義を作ったり、 属性値をセットする際にブロックをとれたりする。
手軽にテストデータを作るには便利なライブラリだと思う。