1

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

我正在尝试找到一种解决方案,以理想地使用 VCR 之类的机制来模拟 twitter 流。显然,VCR 仅适用于 http 请求的 tcp 套接字连接。

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

4

1 回答 1

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")
于 2014-04-16T18:59:05.907 回答