0

Videoモデルが作成されたときにvimeoビデオの適切なサムネイルを作成することを確認するための仕様を作成しています。これは次のようになります。

    it "creates thumbnail url" do
      vimeo_url = "http://player.vimeo.com/video/12345"
      vid = Factory.build(:video, video_url:vimeo_url)
      # thumbnail created when saved
      vid.save!

      expect do
        URI.parse(vid.thumbnail_url)
      end.to_not raise_error
    end

問題は、vimeo.comにアクセスする必要があるため、テストが非常に遅いことです。そのため、サーバーを呼び出すメソッドをスタブ化しようとしています。したがって、2つの質問:

1)これは何かをスタブする正しい方法/時間ですか

2)はいの場合、どうすればスタブできますか?私のVideoモデルには、get_vimeo_thumbnail()vimeo.comにヒットするというメソッドがあります。そのメソッドをスタブしたい。しかし、私の仕様では、vid.stub(:get_vimeo_thumbnail).and_return("http://someurl.com")それは機能しません。テストを実行しても、vimeo.comにヒットします。

4

2 に答える 2

2

VCRの宝石はおそらく検討する価値があります。初めて実行したときに実際のWebサービスにヒットし、応答を記録して、次にテストを実行したときに再生できるようにします(後続のテストを高速化します)。

stub以前に呼び出している場合、スタブ呼び出しに問題はありませんsave!

于 2012-06-06T09:30:23.193 に答える
0

また、「vcr」ジェムの使用を2番目にしています。

VCRについて利用可能なRailscastの(プロ)エピソードもあります:http: //railscasts.com/episodes/291-testing-with-vcr

VCRを使用して、すべての発信Webサービス呼び出しを「カセット」(フィクスチャ)に記録できます。このカセットは、テストが再度実行されたときに再生されます。したがって、「実際の」応答の初期セットを取得しますが、リモートAPIにはもうヒットしません。

また、ローカルで利用可能な応答が記録されていない場合に「オンデマンド」リクエストを実行するオプションや、明示的な「ライブ」リクエストを作成するオプションもあります。

ライブエンドポイントに対してテストを実行して、検証することができます。また、実行する必要があります。

于 2012-06-10T05:15:58.907 に答える