2

自分の編集レシピ ページが rspec を使用してレンダリングされることをテストしたいが、ルーティングは行われない

    recipes/edit

レシピ/id/edit にルーティングされます (id は数字に置き換えられます)

私の現在のテストは次のようになります

 describe "Show Edit Recipe Page" do

  it "should display edit recipe  page" do
    get :edit
    response.should be_success
    response.should render_template(:edit)
  end
end

このページを正しくテストするにはどうすればよいですか。現在、テストが失敗しています

4

2 に答える 2

2

問題

あなたの例には、コントローラーオブジェクトを実際にテストするために必要なコードが含まれていません。RecipeController は仕様で定義されていません。

解決

コントローラーのスペックが spec/controllers の下にあること、または明示的なセットがあることを確認してくださいtype: :controller。次に、暗黙のサブジェクトを使用するか、前ブロックまたはテスト ブロックでコントローラー インスタンスを設定して、実際にコントローラーを記述します。最も基本的な例として:

describe RecipeController do
  # test something using the implied RecipeController.new
end

もっと読む

RSpec コントローラーのスペック

于 2012-11-01T21:26:59.103 に答える
1

getparams ハッシュで渡されるレシピの ID が必要です。

let(:recipe) { Factory.create(:recipe) }

it "should display edit recipe page" do
  get :edit, :id => recipe.id
  response.should be_success
  response.should render_template(:edit)
end
于 2012-11-01T21:28:29.847 に答える