我有一个使用 the aws-sdk-rails gem 从 SQS 队列读取/处理消息的类(这是 aws-sdk-ruby v2 上的包装器)。如何模拟 AWS 调用,以便在不影响外部服务的情况下测试我的代码?
communicator.rb:
class Communicator
def consume_messages
sqs_client = Aws::SQS::Client.new
# consume messages until the queue is empty
loop do
r = sqs_client.receive_message({
queue_url: "https://sqs.region.amazonaws.com/xxxxxxxxxxxx/foo",
visibility_timeout: 1,
max_number_of_messages: 1
})
break if (response.message.length == 0)
# process r.messages.first.body
r = sqs_client.delete_message({
queue_url: "https://sqs.region.amazonaws.com/xxxxxxxxxxxx/foo",
receipt_handle: r.messages.first.receipt_handle
})
end
end
end
最佳答案
AWS SDK 已经提供 stub 。 q.v. http://docs.aws.amazon.com/sdkforruby/api/Aws/ClientStubs.html了解更多信息(链接到官方文档。)
关于ruby - 如何使用 rspec 模拟 AWS SDK (v2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33557451/