As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Simular respostas e erros de clientes
Saiba como simular respostas e erros de clientes em um aplicativo AWS SDK para Ruby.
Simular respostas de clientes
Quando você simula uma resposta, o AWS SDK para Ruby desabilita o tráfego de rede e o cliente retorna dados simulados (ou falsos). Se você não fornecer dados simulados, o cliente retornará:
-
Listas como matrizes vazias
-
Mapas como hashes vazios
-
Valores numéricos como zeros
-
Datas como
now
O exemplo a seguir retorna nomes simulados para a lista de buckets do Amazon S3.
require 'aws-sdk'
s3 = Aws::S3::Client.new(stub_responses: true)
bucket_data = s3.stub_data(:list_buckets, :buckets => [{name:'aws-sdk'}, {name:'aws-sdk2'}])
s3.stub_responses(:list_buckets, bucket_data)
bucket_names = s3.list_buckets.buckets.map(&:name)
# List each bucket by name
bucket_names.each do |name|
puts name
end
A execução desse código exibe o seguinte.
aws-sdk aws-sdk2
nota
Depois de você fornecer dados simulados, os valores padrão não se aplicam mais aos atributos de instância restantes. Isso significa que, no exemplo anterior, o atributo de instância restante, creation_date
, não é now
, mas sim nil
.
O AWS SDK para Ruby valida seus dados simulados. Se você transmitir dados do tipo errado, ele lançará uma exceção ArgumentError
. Por exemplo, se, em vez da atribuição anterior a bucket_data
, você tiver usado o seguinte:
bucket_data = s3.stub_data(:list_buckets, buckets:['aws-sdk', 'aws-sdk2'])
O AWS SDK para Ruby gera duas exceções de ArgumentError
.
expected params[:buckets][0] to be a hash expected params[:buckets][1] to be a hash
Simular de erros de clientes
Você também pode simular de erros gerados pelo AWS SDK para Ruby para métodos específicos. O exemplo a seguir exibe Caught Timeout::Error error calling head_bucket on aws-sdk
.
require 'aws-sdk'
s3 = Aws::S3::Client.new(stub_responses: true)
s3.stub_responses(:head_bucket, Timeout::Error)
begin
s3.head_bucket({bucket: 'aws-sdk'})
rescue Exception => ex
puts "Caught #{ex.class} error calling 'head_bucket' on 'aws-sdk'"
end