「テストコードがうまく書けない」ということで実装の相談を受けて私自身も色々調べたらfactory-botのtransient
の使い方が原因で意図したテストデータを作れていなかったみたいでした。
私自身もtransient
は初めてでしたので調査したことメモっておきます。
公式docに書いてあるのでこれ見てください。
factory_bot/GETTING_STARTED.md at main · thoughtbot/factory_bot · GitHub
factory :user do transient do rockstar { true } end name { "John Doe#{" - Rockstar" if rockstar}" } end create(:user).name #=> "John Doe - ROCKSTAR" create(:user, rockstar: false).name #=> "John Doe"
- factoryの定義内で使える
- buildされたオブジェクトには値はセットされない
- 他の属性からアクセスできる
とのこと。
馴染みない英語が出てきたら意味と発音も調べるようにしているのですが、一時的な
という意味。