繁体   English   中英

在AWS开发工具包v2中存根S3 presigned_url

[英]Stubbing S3 presigned_url in AWS SDK v2

我正在尝试使用AWS Ruby SDK 响应存根在与S3的交互中测试一些错误处理。

我已经能够对一个简单的put_object案例进行存根,但是由于某些原因,我无法对presigned_url存根。 请务必注意,我使用的是旧版SDK。

# Gemfile
gem 'aws-sdk', '2.3.22'
describe 'Stubbing AWS' do
  module S3Helper
    def self.presigned_url(object_key:, client:)
      resource = ::Aws::S3::Resource.new(:client => client)
      bucket = resource.bucket('my-great-bucket')
      bucket
        .object(object_key)
        .presigned_url(:get)
    end
  end

  it 'should allow me to stub signed_url' do
    test_client = Aws::S3::Client.new(
      :access_key_id => ENV['SECRET_ACCESS_KEY_ID'],
      :secret_access_key => ENV['SECRET_ACCESS_KEY'],
      :region => ENV['AWS_REGION']
    )

    test_client.stub_responses(:get_object 'NotFound')

    expect do
      S3Helper.presigned_url(
        object_key: 'my-key',
        client: client
      )
    end.to raise(/NotFound/)
  end
end

测试失败是因为响应不会触发NotFound错误,即使我可以清楚地看到在应用程序日志中发出了get_object请求(并返回了假响应)。

目前,我正在通过将模拟客户端传递给我的服务并存根objectpresigned_url方法来解决此问题,但是我更希望让SDK为我做模拟。 我想念什么?

我认为您未正确响应。

尝试这种方式:

test_client.stub_responses(:get_object, 'NotFound')

从文档中,我看到stub_responses方法接受一个参数数组,而不是哈希。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM