我有一個類使用the aws-sdk-rails gem(這是aws-sdk-ruby v2的包裝)讀取/處理來自SQS隊列的消息。我如何模擬AWS調用,以便我可以測試我的代碼而不碰到外部服務?如何使用rspec模擬AWS SDK(v2)?
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
這個老問題解決了同樣的問題:http://stackoverflow.com/questions/16380426/how-to-mock-aws-sdk-gem。但是,它是關於殘留,n嘲笑。 –