【问题标题】:How to mock a streaming API with RSpec?如何使用 RSpec 模拟流式 API?
【发布时间】:2015-08-26 02:45:54
【问题描述】:

我正在使用tweetstream gem,它简化了与Twitter streaming API 的交互。我正在流式传输所有推文,就像 gem 页面上显示的代码示例一样:

TweetStream::Client.new.sample do |status|
  puts "#{status.text}"
end

我已将其放入 #capture 方法中,并使用一些简单的逻辑来运行流仅几秒钟并将所有推文(status.text 字符串)捕获到一个数组中。

我想为#capture 编写单元测试。我将如何剔除推文流?我猜我会将推文存储在文件或StringIO 对象中,但我不知道如何编写模拟来处理流 API 发生的任何 TCP 交互。我也不确定我是否应该在这里使用 VCR。

【问题讨论】:

    标签: ruby unit-testing rspec twitter-streaming-api tweetstream


    【解决方案1】:

    阅读文章,了解使用 VCR gem 测试外部服务的非常简单的方法 https://robots.thoughtbot.com/how-to-stub-external-services-in-tests

    很多人可能会建议使用下面的这种方法,它不完整且易碎,因此最好避免使用它。

    客户 = Twitter::Client.new client.stub(:sample).and_yield(:message)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      相关资源
      最近更新 更多