-2

テスト ケースの実行中に Rails 環境を変更する必要があります。

if Rails.env.production?
  # Do something
else
  # Do something else
end

テスト ケースの途中で Rails 環境を変更するにはどうすればよいですか。Rails 2.3.16 と Ruby 1.9.3 を使用しています

4

4 に答える 4

2

そのコードをテストしたい場合は、次のようにしてその呼び出しをスタブする必要があります。

Rails.stub_chain(:env, :production?).and_return(true)

それは基本的にRails.env.production?trueを返すための呼び出しを行います。

テストケースを実行するために使用しているフレームワークの多くを提供しなかったため、モックを使用して RSpec で動作します。

これにより、実行中の呼び出しがそのコード ブロックに入り、それに対するテストを作成できるようになります。

于 2013-02-02T16:49:59.587 に答える
1

上記のコードをテストするには、RSpec を使用している場合は @Leo で言及されているように環境を変更できます。フレームワークに組み込まれたRailsを使用してテストケースを作成している場合は、これを行うことができます。

Rails.env.stubs(:production?).returns(true)
于 2013-02-04T06:01:33.450 に答える
0

この質問は、次のように明確に表現できます (以下を参照)。これらを元の質問の編集として送信しようとしましたが、一部の「賢い」レビュアーは私の編集を拒否することにしました。興味深いことに、私の編集を拒否した人は、Ruby/Rails の経験がないようです。

Rails 環境に依存するアプリケーション コードのテスト ケースを作成する必要があります。コードは次のようになります。

if Rails.env.production?
   # Do something
else
   # Do something else
end

ロジックのif一部と一部の両方をテストできるように、テスト ケースで Rails 環境をシミュレートするにはどうすればよいですか?else

Rails 2.3.16 と Ruby 1.9.3 を使用しています

于 2013-09-18T04:59:42.350 に答える
0

使用する

Rails.env.stubs(:production?).returns(true)

テスト ケースの作成に Rails 組み込みのテスト フレームワークを使用している場合。

于 2013-02-08T11:49:17.507 に答える