質問

コントローラーをテストするためにshouldaでTest :: Unitを使用しています。

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

いくつかのオブジェクトをスタブ化していますが、ビューがレンダリングされるときにいくつかのエラーがスローされますが、コントローラーが正しいため、テストは失敗しません。

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

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

役に立ちましたか?

解決

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

@controller.expects(:render)

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

gem install mocha

その後、test_helper.rbで

require 'mocha'

他のヒント

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

shoulda docsから取得リクエストを取得して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

レールガイドをご覧くださいこれもかなり良いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top