2011-01-05 5 views
1

RSpecを実行して、Webに接続しているときとそうでないときの両方で自分のコードをテストしたいと思います。Rspecをオフラインで実行しているときに、オンラインの依存関係をどのように扱うべきですか?

は残念ながらライブ接続を持つに依存しているアプリケーション内のいくつかのテストがある - 電子メールが送信、Facebookとの統合など

オンライン/オフラインのテスト環境を作成するためのベストプラクティスの方法はありますかこれです悪い練習ですか?私がウェブ上でこれについて何を見つけることができるかで判断すると、私は後者を推測しています。

答えて

1

通常、このような状況では、アプリケーションの外部に接続するコードの部分をモックすることになります。これにより、接続先のサービス/システムから期待される結果をテストすることができます。テストの実行も早くなります。

rspec と一緒に嘲笑に関する簡単なチュートリアルですが、私は十分にあなた自身を見つけることができると確信しています。

電子メールが送信されることをテストするために、ActionMailer経由で送信する場合は、他の方法があります。 rails testing guideにそのセクションがあります。

EDIT(コメントへの応答): TestHelperには、オンライン時にテストを実行する方法があります。ような何か:私は完全にそれを提唱わからない

def test_facebook 
    when_online do 
    ..... 
    end 
end 

それはあなたがやりたいことがあります

def when_online 
    if test_remote_connectivity 
    yield 
    else 
    puts "Skipping test offline." 
    end 
end 

次に、あなたが好きそれを呼び出すことができます!

+0

ありがとうございましたShadwell、非常に便利です。 をんtestRemoteConnectivity @online =真 他 @online = falseを エンド 場合 @online保留中:私はすでにスタブやモックが、私はの線に沿って何かを行うことができますどのような方法があった場合、私は思っていましたよ#リモート依存性テスト end 私は何も心配しているとは思えませんが、接続が切断されている間は赤くならないようにしてください。 –

+0

あなたはそれを行う方法を書いて、オンライン時のオンラインテスト(あなたが本当にしたい場合!)。長期的に物事を嘲笑/スタッビングするよりも(私にとって)より多くの努力のようです。私は私の答えを編集します。 – Shadwell

+0

ニース - それはまさに私が探していたロジックのタイプでした。私はあなたの評価に同意するのはおそらく正しいことではないことに同意しますが、必要であればコードがどのように書かれているかを見てうれしいです –

0

リモートリソースに接続したくないテスト/スペックの中にwebmockを使用できます。

関連する問題