0

我正在使用 RSpec-2 来测试我的控制器,但我看到了奇怪的行为。基本上我做的和Railscasts #71一样

describe DeliverablesController do
  describe "responding to POST create" do
    describe "with valid parameters" do
      it "should pass the params to the deliverable item" do
        post :create, :deliverable => {:title => "Some Deliverable"}
        assigns[:deliverable].title.should == "Some Deliverable"
      end
    end
  end
end

这会导致以下错误:

  1) DeliverablesController responding to POST create with valid parameters should pass the params to the deliverable item
     Failure/Error: post :create, :deliverable => {:title => "Some Deliverable"}
     ActionController::RoutingError:
     No route matches {:deliverable=>{:title=>"Some Deliverable"}, :controller=>"deliverables", :action=>"create"}

显然:deliverable不应该是路由的一部分而是写入params. 我的问题始于不确定post调用哪种方法。

我的 Gemfile.lock 可以在这里找到。


编辑

我的 routes.rb 可以在这里找到。

4

1 回答 1

0

有时跳出想法是件好事:我的问题是我处于嵌套路由中,基本上执行以下操作。

resources :projects do
    resources :deliverables
end

错误消息让我失望,真正的问题是我没有提供project_id. 我通过这样做来修复它

post :create, :project_id => 11, :deliverable => {:title => "Some Deliverable"}

代替

post :create, :deliverable => {:title => "Some Deliverable"}

谢谢你,哈马尔!

于 2011-05-09T10:30:41.703 回答