gpt4 book ai didi

rspec 和carrierwave - 如何直接设置图像url(测试期间BYPASScarrierwave uploader )

转载 作者:行者123 更新时间:2023-12-04 21:18:15 25 4
gpt4 key购买 nike

我正在编写一些 rspec 规范,其中对象的 widgetpic 字段需要指向实际图像,但不使用载波上传器。

在测试时,我只想绕过上传器并手动设置测试图片的网址。具体来说,我在网上有一些测试图像,只是想拥有 foo.widgetpic.url返回一些固定位置:"http://mybucket.s3.amazonaws.com/test_pix/test1.png"

小部件模型具有:

mount_uploader :widgetpic, WidgetPicUploader

所以在我的 FactoryGirl 工厂中,我认为我需要做这样的事情
trait :test_pic do
SOMETHING "http://mybucket.s3.amazonaws.com/test_pix/test1.png"
end

我尝试设置 widgetpic_url 和 remote_widgetpic_url 但这没有用(widgetpic.url 仍然返回我在上传器中定义的默认“无图像”图像)。

最佳答案

您的上传器似乎有其他问题,而不是工厂。你能发布你的载波配置吗?

除此之外,远程图像的正确工厂语法是remote_<资源>_url:

trait :test_pic do
remote_widgetpic_url "http://mybucket.s3.amazonaws.com/test_pix/test1.png"
end

但是,请注意,这样做不会绕过 CarrierWave。 CarrierWave 将为您获取远程图像并使用下载的图像重新上传到您的上传器中指定的位置。您可以将此技术与类似 WebMock 的内容结合使用。或 VCR模拟和/或记录 HTTP 请求并回放。

一种更简单的方法可能是使用 Fog 中内置的模拟功能。为测试模拟上传。这样,您就可以在工厂中放置一个虚拟图像:
factory :widget do   
# ...

widgetpic Rack::Test::UploadedFile.new(File.open(
File.join(
File.dirname(__FILE__), '../fixtures/images/your_image_here.png')))
end

该图像将用于模拟上传,但不会发布到 S3 上的位置,您可以从端到端测试上传。

关于rspec 和carrierwave - 如何直接设置图像url(测试期间BYPASScarrierwave uploader ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com