FactoryGirlのinheritanceやtransientの確認をする
他にもいろいろ復習したり、しなかったりする。
直近で言うと、もすこしデータベースとlinuxの勉強をしたい感じあります。
今回はすこし面倒くさかったので、コードは
factory_girl/GETTING_STARTED.md at master · thoughtbot/factory_girl · GitHub
からの引用もあります。
正直、今回の内容は詳しく調べてみてから、全部覚えていて使い分ける、というより、
どれか1つをプロジェクトで揃えておいたほうがやりやすそうだなぁ、と思いました、まる。
inheritance
他の属性は共有しているけれど、特定の属性だけ追加、ないし、上書きしたい場合に使う。
継承元のfactoryブロックの中にfactoryブロックを書いて、追記したい属性をそのブロック内に書く。
こういう書き方も出来る。
上の書き方のほうがシンプルなんだけど、1つのfactory(大体追加するのは新しいテストしたいデータ仕様が出たとき)に1つのブロックが対応している方がテストコード追うときは楽な気もする。
trait
日本語で言うと、特徴.
.crateや.buildの引数にさらにシンボル(だけ)を追加すると、そのシンボルを引数に取るtraitのブロックの中の設定が.createや.buildで生成されたインスタンスに適用される。
transientもそうなんだけど同質の部分を振り分ける、という印象。
inheritanceみたいな使い方もできる。
transient
日本語で言うと一時滞在者くらい.
場合分けによって特定の属性を替えたfactoryを作りたいときに使う。
transientブロックをfactory内に書いておいてその中に管理者フラグなどを作っておいて、
管理者フラグがONならadmin trueにする、というように書ける。
inheritanceを使うとfactory名が長くなりそう。
それぞれ便利だけどあまり混ぜると訳分からなくなりそうだな……
alias
同じデータを別の名前で呼びたいときはaliasを使う。
(ユーザ同士をフォロー者、被フォロー者とする、みたいな)
dependent attributes
メールアドレスのサンプルをユーザ名から作りたいな、という場合に使える。