关掉我在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`
API将stub_responses
的第一个参数称为operation_name
。这些示例通常使用名为list_buckets
的操作,有时使用head_bucket
,但我找不到可接受的操作列表。我是在阅读文档错误还是设置错误的例子?
作为一种解决方法我正在使用RSpec来存根方法。假设我在obj
中得到了相同的对象,上面的例子只需要以下代码来传递我的测试
allow(obj).to receive(:upload_file).and_return(false)
答案 0 :(得分:1)
在快速浏览一下您指出的Api文档后,我最好的猜测是sockaddr_in
只是将stub_response
上的方法调用存根,client
是Aws::S3::Client
的一个实例类。
但是,您对upload_file
的{{1}}实例Aws::S3::Object
执行了client.stub_reponses
。