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á.
Adicionar testes com stubs à sua aplicação do AWS SDK para Ruby
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