【问题标题】:RSPEC view testing with associated methods使用相关方法的 RSPEC 查看测试
【发布时间】:2017-02-04 02:32:43
【问题描述】:

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

场景是一个拥有许多“图片”的“用户”。有一个与名为 'photo' 的 'pic' 关联的 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。显然,用户没有与之关联的图片。

我在规范中尝试了多种创建关联的方法,但尚未成功。

【问题讨论】:

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


    【解决方案1】:

    您可以在自己的工厂中创建关联的对象。试试这个

    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
    

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多