2

我想测试我的编辑配方页面是否使用 rspec 呈现,尽管它不会路由到

    recipes/edit

它路由到recipes/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设置。然后,实际描述一个控制器,或者使用隐式主题,或者通过在 before 或 test 块中设置一个控制器实例。作为最基本的例子:

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

更多阅读

RSpec 控制器规格

于 2012-11-01T21:26:59.103 回答
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
于 2012-11-01T21:28:29.847 回答