RailsのテストコードをもっとDRYにしたい
Rails on Rubyでアプリケーションのテストコードを書いているんですが、
もっとDRYなコードにしたくて、インスタンス変数をletに置き換えてるのですが、
FactoryBotでランダムに生成したインスタンスをletに代入して、
後で使いまわしたいのですが、わからないなりに実装した結果
余計に冗長なコードになってしまいました。
もっとシンプルにする方法があれば教えてください。
コード
Ruby
1describe User do 2 let(:fakeUser) {build(:user)} 3 4 let(:email) {fakeUser.email} 5 let(:password) {fakeUser.password} 6 let(:password_confirmation) {fakeUser.password} 7 let(:nickname) {fakeUser.nickname} 8 let(:last_name) {fakeUser.last_name} 9 let(:first_name) {fakeUser.first_name} 10 let(:last_name_kana) {fakeUser.last_name_kana} 11 let(:first_name_kana) {fakeUser.first_name_kana} 12 let(:birth_date) {fakeUser.birth_date} 13 14 let(:user){User.new( 15 nickname: nickname, 16 email: email, 17 password: password, 18 password_confirmation: password_confirmation, 19 first_name: first_name, 20 last_name: last_name, 21 first_name_kana: first_name_kana, 22 last_name_kana: last_name_kana, 23 birth_date: birth_date 24 )} 25 subject{user} 26 shared_examples '登録できる' do 27 it { is_expected.to be_valid } 28 end 29 shared_examples '登録できない' do 30 it { is_expected.to be_invalid } 31 end 32 describe 'すべての項目' do 33 context 'nickname、email、password、password_confirmation、last_name、first_name、last_name_kana、first_name_kana、birth_dateが存在する時' do 34 it_behaves_like '登録できる' 35 end 36 end 37 describe 'nicknameの検証' do 38 context '空の場合' do 39 let(:nickname){nil} 40 it_behaves_like '登録できない' 41 end 42 end 43end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/10 04:10
2021/01/10 04:50
2021/01/10 07:58