Rspec和Carrierwave。将config.storage更改为文件进行测试时,我得到的ArgumentError不是可识别的存储提供程序异常

时间:2012-11-30 02:02:29

标签: ruby-on-rails rspec carrierwave

我的应用程序中有两个载波上传器。 ImageUploader用于本地上传,ImageRemoteUploader用于使用雾上传到Amazon S3存储。 ImageUploader的存储设置为:file,ImageRemoteUploader的存储设置为:fog。这个设置工作正常,但是当我开始设置我的rspec测试时,事情会发生变化。

当我在测试期间更改ImageRemoteUploader以使用:file存储时,会出现问题。我在雾初始化文件中执行此操作。文件, /config/initializers/fog.rb ,如下所示:

CarrierWave.configure do |config|
  if Rails.env.test?
    config.storage = :file
    config.enable_processing = false
  else
    config.fog_credentials = {
    :provider               => 'AWS',       # required
    :aws_access_key_id      => 'XXXXXXXX',       # required
    :aws_secret_access_key  => 'XXXXXX',       # required
    :region                 => 'XXXX'  # optional, defaults to 'us-east-1'
    }
    config.fog_directory  = 'xxx'                     # required
    config.fog_public     = true                                   
  end 
end

当我这样做时,我收到了ArgumentError is not a recognized storage provider运营商浪潮异常。当我使用雾凭证(我没有将config.storage设置为:file)时,测试按预期工作。

Carrierwave 0.7.1,Rails 3.2.8,Ruby 1.9.3,Rspec 2.10

感谢。

1 个答案:

答案 0 :(得分:3)

我会尝试按Carrierwave docs中的建议将config.storageconfig.enable_processing行移至lib/initializers/carrierwave.rb

Fog也有自己的模拟支持,可以通过在示例之前运行Fog.mock!来启用。这可能是一种更好的方法。