2017-02-04 12 views
0

ファクトリーガールとRSPECを使用してActiveRecordの関連付けによって提供されるメソッドを実装するにはどうすればよいですか?コードは私が望むように機能していますが、機能ビューテストを作成することはできません。関連するメソッドによるRSPECビューのテスト

シナリオは多くの「写真」を持つ「ユーザー」です。 「写真」という名前の「写真」に関連付けられたCarrierwaveアップローダーがあります。

コントローラー:

@users = User.includes(:pics).order("pics.pic_order ASC") 

ビュー:

<% @users.each do |user| %> 
    <%= image_tag(user.pics.first.photo.url(:aspect15small)) %> 
<% end %> 

ユーザーファクトリー:

factory :user do 
    height 60 
    weight 150 
end 

ピック工場:

factory :pic do 
    photo { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec/photos/user1.jpg'))} 
    user 
    pic_order {generate(:pic_order)} 
end 

ビュースペック:

ActionViewにおけるスペック結果を実行
pics = build_stubbed_list(:pic, 10) 
users = build_stubbed_list(:user, 10) 
assign(:users, users) 
render 

::テンプレート::エラー:nilのための未定義のメソッド `写真」:NilClass。明らかに、ユーザーはそれに関連する写真を持っていません。

私は、仕様にアソシエーションを作成するさまざまな方法を試しましたが、まだ成功していません。

答えて

0

関連するオブジェクトを工場で自己作成することができます。試してみてください

factory :user do 
    height 60 
    weight 150 

    after(:build) do |user| 
    if user.pics.empty? 
    user.pics.push build(:pic), build(:pic) 
    end 
    end 
end 
+0

ありがとうございます。これは正しい方向に私を指摘した。 –

関連する問題