使用相关方法进行RSPEC视图测试

时间:2017-02-04 02:32:43

标签: ruby-on-rails ruby rspec carrierwave factory-bot

如何使用Factory Girl和RSPEC实现通过ActiveRecord关联提供的方法?代码正在按照我的意愿运行,但我无法创建功能视图测试。

该方案是一个用户'有许多照片'。有一个Carrierwave上传器与' pic'命名'照片'。

控制器:

@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

Pic Factory:

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 ::错误:未定义的方法`照片&#39;为零:NilClass 。显然,用户没有与之相关的pic。

我已经尝试了很多在规范中创建关联的方法,但还没有成功。

1 个答案:

答案 0 :(得分: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