如果定义了某些环境变量,我有条件地使用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。
答案 0 :(得分:0)
我假设您要测试是否正确设置了凭据。例如,您可以按如下方式检查它:
Rails.application.config.paperclip_defaults[:storage][:s3_credentials][:bucket].should eql BUCKET_NAME
只是一个额外的观点 - 我建议将S3凭据的各个配置移动到环境文件(test.rb
,development.rb
等)。这样,您可以隔离各个环境的凭据。此外,您可以更轻松地测试事物,因为您可以在测试环境中使用虚拟值来表示凭据。