如何使用rspec-rails测试控制器?

时间:2012-11-01 21:12:44

标签: ruby-on-rails-3 rspec controller

我想测试我的编辑配方页面使用rspec渲染,但它没有路由到

    recipes/edit

它路由到食谱/ id /编辑(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

如何在我的测试失败时正确测试此页面

2 个答案:

答案 0 :(得分:2)

问题

您的示例不包含实际测试控制器对象所需的代码。 RecipeController未在您的规范中定义。

解决方案

确保您的控制器规格在规格/控制器下生效或具有明确的type: :controller设置。然后,实际描述一个控制器,使用隐式主题或通过在before或test块中设置控制器实例。作为最基本的例子:

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

更多阅读

RSpec Controller Specs

答案 1 :(得分:1)

get需要在params散列中传递的配方的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