ruby - 如何使用 rspec 模拟 AWS SDK (v2)?

标签 ruby rspec mocking aws-sdk-ruby

我有一个使用 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/

相关文章:

ruby - 任何人都知道字符串开头的 "weird"字符是怎么回事?

ruby-on-rails - 如何从 Rails 的下拉列表中获取选定的时区

ruby-on-rails - Rails 控制台选项卡完成速度慢?

ruby - 在 rspec 测试中实现前置/后置条件的更好方法

ruby - 使用 Rspec 共享示例来测试 Ruby 类的属性

ruby - 我怎样才能得到所有定义的类?

ruby - 单独运行每个 RSpec 规范文件

ruby-on-rails - Rspec 阻止方法被调用

java - jUnit 意外方法调用 DAO Easymock

Python:模拟文件以进行单元测试