0

Twitter ストリーミング APIとのやり取りを簡素化するtweetstream gemをいじっています。gem のページに示されているコード例と同じように、すべてのツイートをストリーミングしています。

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

#captureこれを、ストリームを数秒間だけ実行し、すべてのツイート (status.text文字列) を配列にキャプチャする単純なロジックを含むメソッドに入れました。

の単体テストを書きたい#capture。ツイートのストリームをスタブするにはどうすればよいですか? ファイルまたはStringIOオブジェクトのいずれかにツイートを保存すると思いますが、ストリーミング API で行われている TCP の相互作用を処理するためのモックを作成する方法がわかりません。ここでも VCR を使用する必要があるかどうかわかりません。

4

1 に答える 1

0

VCR gem https://robots.thoughtbot.com/how-to-stub-external-services-in-testsを使用して外部サービスをテストする非常に簡単な方法については、記事をお読みください。

多くの人が以下のこの方法を使用することを提案するかもしれませんが、不完全で壊れやすいので、避けるのが最善です.

client = Twitter::Client.new
 client.stub(:sample).and_yield(:message)
于 2015-08-26T03:08:39.887 に答える