2017-02-04 79 views
0

如何使用Factory Girl和RSPEC實現通過ActiveRecord關聯提供的方法?代碼正常工作,但我無法創建功能視圖測試。使用相關方法進行RSPEC視圖測試

該場景是一個'用戶',有很多'圖片'。有一個Carrierwave上傳器與'pic'相關聯,名爲'photo'。

控制器:

@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 

查看規格:

pics = build_stubbed_list(:pic, 10) 
users = build_stubbed_list(:user, 10) 
assign(:users, users) 
render 

運行在::的ActionView ::模板錯誤規範的結果:無未定義的方法`照片」: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

謝謝。這使我指出了正確的方向。 –