3

AWS バケット内のオブジェクトを取得するリクエストをスタブ化しようとしています。リクエストのスタブに関するドキュメントを読みましたが、オブジェクトではなくバケットのみをスタブできました。ここに私が試したことがあります:

AWS 構成によるスタブ:

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

それはバケツを手に入れましたが、私にはオブジェクトを与えませんでした。呼び出すs3.bucketsとバケットがリストされますが、s3.objects空になります。

gemによるスタブ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 を操作しています。

4

1 に答える 1