是否可以使用Ruby AWS SDK存根文件上传?

时间:2016-07-25 19:07:59

标签: ruby amazon-web-services amazon-s3 aws-sdk

关掉我在AWS Developers Guide找到的内容并查看他们的API Docs,看起来我应该能够本地存根upload_file。但是,以下操作无效,upload_file只返回true

client = Aws::S3::Client.new(stub_responses: true)
client.stub_responses(:upload_file, false)

resource = Aws::S3::Resource.new(client: client)
obj = resource.bucket('foo').object('bar')

obj.upload_file(Tempfile.new('tmp')) #=> `true` when I want `false`

APIstub_responses的第一个参数称为operation_name。这些示例通常使用名为list_buckets的操作,有时使用head_bucket,但我找不到可接受的操作列表。我是在阅读文档错误还是设置错误的例子?

解决方法

作为一种解决方法我正在使用RSpec来存根方法。假设我在obj中得到了相同的对象,上面的例子只需要以下代码来传递我的测试

allow(obj).to receive(:upload_file).and_return(false)

1 个答案:

答案 0 :(得分:1)

在快速浏览一下您指出的Api文档后,我最好的猜测是sockaddr_in只是将stub_response上的方法调用存根,clientAws::S3::Client的一个实例类。

但是,您对upload_file的{​​{1}}实例Aws::S3::Object执行了client.stub_reponses