存根AWS S3对象请求

青色

我正在尝试将请求存储在AWS存储桶中。我已经阅读了他们关于存根请求的文档,并且只能存根存储桶,而不是对象。这是我尝试过的方法:

通过AWS配置存根:

Aws.config[:s3] = {
  stub_responses: {
    list_buckets: {
      buckets: [name: "my-bucket"],
      list_objects: [key: "file.pdf"]
    }
  }
}

虽然那是水桶,但没有给我东西。调用s3.buckets将列出存储桶,但s3.objects将为空。

穿过webmock宝石:

tempfile = file_fixture('file.pdf').read
base_uri = Regexp.new "https://my-bucket.s3.us-west-1.amazonaws.
stub_request(:get, base_uri).to_return(status: 200, body: tempfile)

这似乎仍然行不通。调用bucket.objects仍会返回一个空集合。

我要测试的控制器中的代码:

s3 = Aws::S3::Resource.new
bucket = s3.bucket("my-bucket")
@files = {}

bucket.objects.each do |item|
  @files[File.basename(item.key)] = item.presigned_url(:get)
end

目的是确保我的视图显示@file变量中对象的链接,并且我想测试该链接。任何帮助将不胜感激!我刚开始使用AWS S3进行开发,对googlge的帮助并不多。我正在使用aws-sdk-s3gem与AWS S3一起使用。

青色

弄清楚了。我还需要将#list_objects方法存根以获取对象。最终的存根看起来像这样:

Aws.config[:s3] = {
  stub_responses: {
    list_buckets: {
      buckets: [name: "my-bucket"]
    },
    list_objects: {
      contents: [{key: "mykey"}]
    },
    get_object: {
      body: file_fixture('file').read
    }
  }
}

现在,如果我愿意,s3.buckets.first.objects.first我将取回存根对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章