Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Agregación de pruebas con stubbing a la aplicación AWS SDK para Ruby
Obtenga información sobre cómo disociar respuestas de cliente y errores de cliente en una aplicación AWS SDK para Ruby.
Disociación de respuestas de cliente
Cuando disocia una respuesta, AWS SDK para Ruby deshabilita el tráfico de red y el cliente devuelve datos disociados (o falsos). Si no se suministran datos de disociados, el cliente devuelve:
-
Las listas como matrices vacías
-
Los mapas como hashes vacíos
-
Los valores numéricos como cero
-
Las fechas como
now
El siguiente ejemplo devuelve nombres disociados para la lista de buckets de 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
La ejecución de este código muestra lo siguiente.
aws-sdk aws-sdk2
nota
Una vez proporcionados datos disociados, se dejan de aplicar los valores predeterminados a los atributos de instancia restantes. Esto significa que, en el ejemplo anterior, el atributo de instancia restante creation_date no es now sino nil.
AWS SDK para Ruby valida sus datos disociados. Si pasa datos del tipo equivocado, se genera una excepción ArgumentError. Por ejemplo, si en lugar de la asignación anterior a bucket_data, se hubiera usado lo siguiente:
bucket_data = s3.stub_data(:list_buckets, buckets:['aws-sdk', 'aws-sdk2'])
AWS SDK para Ruby generara dos excepciones ArgumentError.
expected params[:buckets][0] to be a hash expected params[:buckets][1] to be a hash
Disociación de errores de cliente
También puede proporcionar datos disociados para los errores que AWS SDK para Ruby genera para métodos específicos. El ejemplo siguiente muestra 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