Fixtureの書き方メモ

Railsのテストではテストデータの管理(Fixture)としてYAMLを使える。以前「YAMLだと表っぽく書けないなぁ」と思っていたのだけど、それっぽくできることに気がついたのでメモ。

http://yaml.org/spec/1.2/ の「7.4. Flow Collection Styles」より

cd1:
  account_type: 1
  name: にゅうきん1

cd2:
  account_type: 1
  name: にゅうきん2
 :

は、

cd1: { account_type: 1, name: にゅうきん1 }
cd2: { account_type: 1, name: にゅうきん2 }
cp1: { account_type: 2, name: しゅつきん1 }

と書ける。

まぁ、RailsのFixtureではCSVでも書けるので、それを使えばもっとすっきり書けるけれど、各インスタンスに対するエイリアスの付け方が分からないので、マスタ系のテーブルには使っていない。

ちなみに、

1)
IndexError in '#{モデル名} ほにゃらら'
string not matched

というエラーが出る場合は、高い確率で「6.2. Separation Spaces」に違反して

cd1:
  account_type:1
  name:にゅうきん1

とかなっているのでコロンの右隣にスペースが入っているか要チェック。