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-s3
gem を使用して AWS S3 を操作しています。