如何在rspec中模拟twitter流媒体客户端调用?

时间:2014-04-16 10:21:05

标签: rspec twitter-streaming-api vcr twitter-gem

使用rspec和twitter gem https://github.com/sferik/twitter

我正在尝试使用像VCR这样的机制找到一个理想的模拟推特流的解决方案。显然,VCR不能仅在http请求的tcp套接字连接上工作。

如果这个问题太多了,那么任何关于在哪里存根什么都会有所帮助的提示。

1 个答案:

答案 0 :(得分:1)

所以我发现最好的存根地点是https://github.com/sferik/twitter/blob/master/lib/twitter/streaming/connection.rb#L21

首先记录您的信息流,首先在运行一个规范的规范文件中暂时修改SSLSocket#readpartial

module OpenSSL::SSL
  class SSLSocket
    F = File.open("fixtures/twitter/stream0.txt","w")
    def readpartial(*args)
      res = super(*args)
      F.write res
      F.flush
      res
    end
  end
end

当你的夹具完成时。你可以像:

OpenSSL::SSL::SSLSocket.any_instance.should_receive(:readpartial).with(1024).and_return(File.read("fixtures/twitter/stream0.txt")