如何让我的CarrierWave模型在测试中向我返回完整的URL?
尝试测试如何让我的CarrierWave模型在测试中向我返回完整的URL?,carrierwave,Carrierwave,尝试测试载波电波模型非常困难。我将测试环境配置为: if Rails.env.test? CarrierWave.configure do |config| config.storage = :file config.enable_processing = false config.fog_directory = BUCKET # required config.fog_public = false
载波电波
模型非常困难。我将测试环境配置为:
if Rails.env.test?
CarrierWave.configure do |config|
config.storage = :file
config.enable_processing = false
config.fog_directory = BUCKET # required
config.fog_public = false # optional, defaults to true
config.fog_credentials = {
:provider => 'Local', # required
:local_root => LOCAL_ROOT, # required
:endpoint => "http://localhost:3000" # required
}
end
else
CarrierWave.configure do |config|
config.storage = :fog
config.max_file_size = 1.gigabytes # defaults to 5.megabytes
config.fog_directory = BUCKET # required
config.fog_public = false # optional, defaults to true
config.fog_credentials = {
:provider => PROVIDER, # required
:aws_access_key_id => access_key_id, # required
:aws_secret_access_key => secret_access_key # required
}
end
end
它对于测试上传非常有效。这使得测试下载变得困难
下面是一个简单的测试:
require "test_helper"
class UploadTests < ActiveSupport::TestCase
let(:user) { User.me }
let(:repo) { Repository.first }
let(:sub) { user.subscriptions.where(repository_id: repo).first}
it "uploads a CSV file and lets me read it" do
filename = Rails.root.join("test/testfiles/product_upload_test.csv").to_s
upload = sub.uploads.new
File.open(filename) do |f|
upload.text_file_name = f
end
upload.save!
end
end
需要“测试助手”
类UploadTests
一切都很简单。但是我想做的是从模型中读取文件。换句话说,调用一些CarrierWave API,让我抓取文件并读取它
在生产中,我将所有内容都存储在S3上。在测试中,所有内容都在本地文件中。我将local\u root
设置为我的应用程序的public
目录
CarrierWave
仅将url
报告为路径,但不包括local\u root
。我觉得我的工作不是手动构造要从CarrierWave
读取的文件的路径。文件的存储方式/位置应隐藏在我的测试中。。。我应该建造那条路
但我不知道还能做什么。我只想读取该文件。我将测试配置更改为以下内容:
CarrierWave.configure do |config|
config.storage = :file
config.enable_processing = false
config.fog_directory = BUCKET # required
config.fog_public = true # optional, defaults to true
config.fog_credentials = {
:provider => 'Local', # required
:local_root => LOCAL_ROOT, # required
:endpoint => LOCAL_ROOT # required
}
end
现在返回完整的url