Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails FactoryGirl/Bot图像定义_Ruby On Rails_Rspec_Factory Bot_Factory - Fatal编程技术网

Ruby on rails FactoryGirl/Bot图像定义

Ruby on rails FactoryGirl/Bot图像定义,ruby-on-rails,rspec,factory-bot,factory,Ruby On Rails,Rspec,Factory Bot,Factory,我有一个功能测试。在这个特性测试中,我需要将一些数据加载到测试数据库中:let!(:product1){create(:product)} 我正在使用FactoryBot创建:product对象并将其保存到数据库: FactoryBot.define do factory :product do name 'Master Coat' color 'black' size 'M' price '870' available true order

我有一个功能测试。在这个特性测试中,我需要将一些数据加载到测试数据库中:
let!(:product1){create(:product)}

我正在使用FactoryBot创建:product对象并将其保存到数据库:

FactoryBot.define do
  factory :product do
    name 'Master Coat'
    color 'black'
    size 'M'
    price '870'
    available true
    order 1
    image_1 '/assets/images/test_image.jpeg'
    image_2 '/assets/images/test_image.jpeg'
    image_3 '/assets/images/test_image.jpeg'
    image_4 '/assets/images/test_image.jpeg'
    image_5 '/assets/images/test_image.jpeg'
    image_6 '/assets/images/test_image.jpeg'
  end
end
我运行了我的RSpec测试:

  describe 'GET #detail' do
    it 'should return only products with a specified name' do
        visit detail_path(name: 'Master Coat')
    end
  end
但是,我得到一个错误,因为我的视图需要生成图像1、2等,在我的真实应用程序中,这些图像是通过url从AWS加载的。但是在我的测试中,我不想向AWS发送请求,因为我没有测试图像。加载的图像不相关。我只想在我的
app/assets/images/test\u image.jpeg
目录中有一个虚拟图像,并让FactroyBot在所有测试中都使用该图像,但我很难让它正常工作,因为我错误地指定了图像的路径,而FactoryBot给我一个错误:

ActionView::Template::Error:
       The asset "assets/images/test_image.jpeg" is not present in the asset pipeline.

我试过几种不同的方法让它工作。指定my images文件夹的url的正确方法是什么,这样FactoryBot就可以检索虚拟图像了?这是最好的方法还是更好的方法?

只需删除路径即可。当您使用
image\u标记('test\u image.jpeg')
rails将在
app/assets/images
中查看。您也可以将文件放在公共目录中,它们将以静态方式提供,而不是通过管道

FactoryBot.define do
  factory :product do
    name 'Master Coat'
    color 'black'
    size 'M'
    price '870'
    available true
    order 1
    (1..6).each {|n| send "image_#{n}", 'test_image.jpeg' }
  end
end

我第一次尝试不使用路径,但它不起作用,但现在我发现由于另一个错误,它不起作用。在任何情况下,这就像一个魅力和爱你如何缩短我的工厂与块:)。