【问题标题】:How can I mock twitter streaming client calls within rspec?如何在 rspec 中模拟 twitter 流式客户端调用?
【发布时间】:2014-04-17 02:59:05
【问题描述】:
使用 rspec 和 twitter gem https://github.com/sferik/twitter
我正在尝试找到一种解决方案,以理想地使用 VCR 之类的机制来模拟 twitter 流。显然 VCR 不适用于 tcp 套接字连接,仅适用于 http 请求。
如果这个问题太多了,任何关于在哪里存根的提示都会有帮助。
【问题讨论】:
标签:
rspec
twitter-streaming-api
vcr
twitter-gem
【解决方案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")