0

我的项目使用 Paperclip 和 Amazon S3,但我需要一个不直接连接到 S3 的开发/测试环境。我尝试使用 FakeS3,但没有运气,因为我使用的是aws-sdk版本 2(所有其他网站都显示了如何继续使用 v1)。

有办法吗?如何?

我的Gemfile

gem 'aws-sdk', '~> 2.5', '>= 2.5.3'
gem 'paperclip', '~> 5.1'

group :development, :test do
  gem 'fakes3', '~> 0.2.4'
end
4

1 回答 1

0

aws-ruby-sdk v2 提供了一些允许您测试使用 AWS sdk 的代码的功能。

stub_data 和 stub_responses

如果提供许多选项,其中之一是:

# stub data in the constructor
client = Aws::S3::Client.new(stub_responses: {
  list_buckets: { buckets: [{name: 'my-bucket' }] },
  get_object: { body: 'data' },
})

client.list_buckets.buckets.map(&:name) #=> ['my-bucket']
client.get_object(bucket:'name', key:'key').body.read #=> 'data'

这样您就可以控制 SDK 返回的内容,而无需使用真正的服务。

http://docs.aws.amazon.com/sdkforruby/api/Aws/ClientStubs.html

于 2016-12-15T20:06:34.723 回答