【问题标题】:How do I test a controller with rspec-rails?如何使用 rspec-rails 测试控制器?
【发布时间】:2012-11-01 21:12:44
【问题描述】:

我想测试我的编辑配方页面是否使用 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

目前我的测试失败了,如何正确测试此页面

【问题讨论】:

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


    【解决方案1】:

    问题

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

    解决方案

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

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

    更多阅读

    RSpec Controller Specs

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 这对我不起作用。它抛出一个ArgumentError: bad argument (expected URI object or URI string)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多