2017-02-04 76 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

谢谢。这使我指出了正确的方向。 –