如何让我的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