Module: Aws::ClientStubs
- Included in:
- Client
- Defined in:
- lib/aws-sdk-core/client_stubs.rb
Overview
This module provides the ability to specify the data and/or errors to return when a client is using stubbed responses. Pass ‘:stub_responses => true` to a client constructor to enable this behavior.
Defined Under Namespace
Classes: Stub
Class Method Summary collapse
- .included(subclass) ⇒ Object private
Instance Method Summary collapse
- #initialize(*args) ⇒ Object
- #next_stub(operation_name) ⇒ Object private
-
#stub_responses(operation_name, *stubs) ⇒ void
Configures what data / errors should be returned from the named operation when response stubbing is enabled.
Class Method Details
.included(subclass) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/aws-sdk-core/client_stubs.rb', line 12 def self.included(subclass) subclass.add_plugin('Aws::Plugins::StubResponses') end |
Instance Method Details
#initialize(*args) ⇒ Object
16 17 18 19 20 |
# File 'lib/aws-sdk-core/client_stubs.rb', line 16 def initialize(*args) @stubs = {} @stub_mutex = Mutex.new super end |
#next_stub(operation_name) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/aws-sdk-core/client_stubs.rb', line 93 def next_stub(operation_name) @stub_mutex.synchronize do stubs = @stubs[operation_name.to_sym] || [] case stubs.length when 0 then new_stub(operation_name) when 1 then stubs.first else stubs.shift end end end |
#stub_responses(operation_name, *stubs) ⇒ void
This method returns an undefined value.
Configures what data / errors should be returned from the named operation when response stubbing is enabled.
## Basic usage
By default, fake responses are generated. You can override the default fake data with specific response data by passing a hash.
# enable response stubbing in the client constructor
client = Aws::S3::Client.new(stub_responses: true)
# specify the response data for #list_buckets
client.stub_responses(:list_buckets, buckets:[{name:'aws-sdk'}])
# no api calls made, stub returned
client.list_buckets.map(&:name)
#=> ['aws-sdk']
## Stubbing Errors
When stubbing is enabled, the SDK will default to generate fake responses with placeholder values. You can override the data returned. You can also specify errors it should raise.
client.stub_responses(:get_object, 'NotFound')
client.get_object(bucket:'aws-sdk', key:'foo')
#=> raises Aws::S3::Errors::NotFound
client.stub_responses(:get_object, Timeout::Error)
client.get_object(bucket:'aws-sdk', key:'foo')
#=> raises new Timeout::Error
client.stub_responses(:get_object, RuntimeError.new('custom message'))
client.get_object(bucket:'aws-sdk', key:'foo')
#=> raises the given runtime error object
## Stubbing Multiple Responses
Calling an operation multiple times will return similar responses. You can configure multiple stubs and they will be returned in sequence.
client.stub_responses(:head_object, [
'NotFound',
{ content_length: 150 },
])
client.head_object(bucket:'aws-sdk', key:'foo')
#=> raises Aws::S3::Errors::NotFound
resp = client.head_object(bucket:'aws-sdk', key:'foo')
resp.content_length #=> 150
82 83 84 85 86 87 88 89 90 |
# File 'lib/aws-sdk-core/client_stubs.rb', line 82 def stub_responses(operation_name, *stubs) if config.stub_responses apply_stubs(operation_name, stubs.flatten) else msg = 'stubbing is not enabled; enable stubbing in the constructor ' msg << 'with `:stub_responses => true`' raise msg end end |