我有以下配置,我想用ruby为它编写TC。我是ruby的新手,想了解如何将Fog的配置设置为指向mock,并在测试用例中使用它。
class TestUploader < CarrierWave::Uploader::Base
storage :fog
def fog_credentials
{
:provider => 'google',
:google_project =>'my project',
:google_json_key_location =>'myCredentialFile.json'
}
end
def fog_provider
'fog/google'
end
def fog_directory
'{#bucket-name}'
end
def store_dir
when :File
"#{file.getpath}/file"
when :audio
"#{file.getpath}/audio"
else
p " Invalid file "
end
end
end
class TestModel
mount_uploader :images, TestUploader
end
有人可以帮助我从配置编写和执行单元测试上它的几个例子。如有任何帮助,我将不胜感激。
从测试,我得到了以下示例代码使用谷歌云存储使用雾宝石:
require "fog/google"
# Uncomment the following line if you want to use Mock
#Fog.mock!
# Bucket name
bucket = "an-existing-bucket"
# Timestamp used as sample string
test = Time.now.utc.strftime("%Y%m%d%H%M%S")
connection = Fog::Storage.new({
:provider => "Google",
:google_project => "your-project",
:google_json_key_location => "path-to-key.json",
})
# Lists objects in a bucket
puts connection.list_objects(bucket)
#Creates new object
connection.put_object(bucket, test, test)
puts "Object #{test} was created."
它可以在生产环境中工作,但是使用mock模式失败,并出现以下错误:
`not_implemented': Contributions welcome! (Fog::Errors::MockNotImplemented)
它似乎没有按照文档中put_object
方法定义的方式实现。
同样,在这个GitHub问题中也说:
<关闭问题。1.0.0已经发布,我们不再支持json支持的对象。
凭证/h3>
正如Fog的文档中所示,要配置Google凭据,您必须按照以下方式配置它们:
connection = Fog::Storage.new({
:provider => 'Google',
:google_storage_access_key_id => YOUR_SECRET_ACCESS_KEY_ID,
:google_storage_secret_access_key => YOUR_SECRET_ACCESS_KEY
})
模拟
在GitHub - Fog::Google文档中,也有一个最小配置将Fog与Carrierwave集成。 为了使用Cloud Storage模拟,可以使用以下行:Fog.mock!
connection = Fog::Storage.new(config_hash)
提供商特定资源
在提供商文档部分,您可以找到指向特定于提供商的文档和示例的链接。
社区支持的提供商可以通过在适当的存储库上提交Github问题来获得帮助。