1

RSpec を実行して、Web に接続している場合と接続していない場合の両方でコードをテストしたいと考えています。

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

オンライン/オフラインのテスト環境を作成するためのベスト プラクティスの方法はありますか、それとも悪い方法ですか? これについてウェブ上で見つけることができるものがどれだけ少ないかから判断すると、後者だと思います。

4

2 に答える 2

1

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

ここに rspec を使ったモックに関する簡単なチュートリアルがありますが、自分でたくさん見つけることができると確信しています。

メールが送信されることをテストするには、ActionMailer 経由で送信している場合は別の方法があります。Rails testing guideにそのセクションがあります。

EDIT(コメントへの回答):TestHelperオンラインのときにのみテストを実行する方法を入れることができます。何かのようなもの:

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

次に、次のように呼び出すことができます。

def test_facebook
  when_online do
    .....
  end
end

私はそれを完全に支持するかどうかはわかりませんが、それはあなたが望むことをするかもしれません!

于 2011-01-05T11:32:55.833 に答える
0

リモート リソースに接続したくないテスト/仕様内でwebmockを使用できます。

于 2014-12-09T10:55:05.680 に答える