基于环境变量的Rspec测试配置

时间:2014-07-10 16:16:28

标签: ruby-on-rails rspec configuration amazon-s3 paperclip

如果定义了某些环境变量,我有条件地使用Amazon-s3作为Paperclip的存储空间。我想用Rspec测试这个。

Application.rb

unless ENV['aws_secret_access_key'].nil? && ENV['aws_access_key_id'].nil? && ENV['aws_bucket'].nil?
   config.paperclip_defaults = {
       storage: :s3,
        s3_credentials: {
            bucket: ENV['aws_bucket'],
            access_key_id: ENV['aws_access_key_id'],
            secret_access_key: ENV['aws_secret_access_key']
        }
    }
end

我尝试了几件没有运气的事情。任何有关如何进行测试的见解都会很棒。感谢。

编辑:

为了扩展到目前为止我尝试的内容,我试图伪造ENV变量并重新加载应用程序。这一点没有用,因为一旦加载了应用程序,我就无法找到改变ENV变量的方法。

我希望做的是测试应用程序是否给出了上述ENV变量(即某些用户可能拥有它们,有些用户可能没有),将回形针配置为S3。

1 个答案:

答案 0 :(得分:0)

我假设您要测试是否正确设置了凭据。例如,您可以按如下方式检查它:

    Rails.application.config.paperclip_defaults[:storage][:s3_credentials][:bucket].should eql BUCKET_NAME

只是一个额外的观点 - 我建议将S3凭据的各个配置移动到环境文件(test.rbdevelopment.rb等)。这样,您可以隔离各个环境的凭据。此外,您可以更轻松地测试事物,因为您可以在测试环境中使用虚拟值来表示凭据。