2

Test::Unit と shoulda を使用してコントローラーをテストしています。

コントローラーをテストしているだけなので、ビューをレンダリングしたくありません。

ビューがレンダリングされるときにいくつかのエラーがスローされますが、コントローラーが正しいため、テストは失敗しないはずです。

私のテストから、テンプレート/ビューのレンダリングを無効にする方法はありますか?

rSpec はそのように機能すると聞きました。

4

2 に答える 2

6

Mocha を使用している場合は、簡単です。これを個々のテストまたはセットアップ メソッドに追加します。

@controller.expects(:render)

そうでない場合は、Mocha を使用してください。

gem install mocha

次に、test_helper.rbで

require 'mocha'
于 2009-05-21T14:46:46.153 に答える
-1

テストで実際にビューが表示されることはありません。失敗したテスト コードを投稿できますか? コントローラー (機能) テストは、アクションが呼び出されたときに特定のアクションが発生していることのみを確認する必要があります。つまり、正しいビューをレンダリングするか、別のアクションにリダイレクトするかを確認する必要があります。ビューのフラッシュやその他の変数の設定を確認することもできます。これはあなたがテストしているタイプですか?

shoulda ドキュメントから取得した get リクエストを使用して show アクションをテストする良い例を次に示します。

class UsersControllerTest < Test::Unit::TestCase
  context "on GET to :show" do
    setup { get :show, :id => 1 }

    should_assign_to :user
    should_respond_with :success
    should_render_template :show
    should_not_set_the_flash

    should "do something else really cool" do
      assert_equal 1, assigns(:user).id
    end
  end
end

たぶん、かなり良いレールガイドも見てください。

于 2009-05-18T16:24:18.963 に答える