RSPEC 查看关联方法的测试
RSPEC view testing with associated methods
如何使用 Factory Girl 和 RSPEC 实现通过 ActiveRecord 关联提供的方法?代码按我希望的方式运行,但我无法创建功能视图测试。
场景是一个 'user' 有很多 'pics'。有一个与 'pic' 关联的名为 'photo'.
的 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
查看规格:
pics = build_stubbed_list(:pic, 10)
users = build_stubbed_list(:user, 10)
assign(:users, users)
render
运行 规范导致 ActionView::Template::Error: undefined method `photo' for nil:NilClass。显然,用户没有与之关联的图片。
我在规范中尝试了多种创建关联的方法,但尚未成功。
您可以在工厂中自行创建关联对象。试试这个
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
如何使用 Factory Girl 和 RSPEC 实现通过 ActiveRecord 关联提供的方法?代码按我希望的方式运行,但我无法创建功能视图测试。
场景是一个 'user' 有很多 'pics'。有一个与 'pic' 关联的名为 'photo'.
的 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
查看规格:
pics = build_stubbed_list(:pic, 10)
users = build_stubbed_list(:user, 10)
assign(:users, users)
render
运行 规范导致 ActionView::Template::Error: undefined method `photo' for nil:NilClass。显然,用户没有与之关联的图片。
我在规范中尝试了多种创建关联的方法,但尚未成功。
您可以在工厂中自行创建关联对象。试试这个
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