相当简单的问题(我本以为),但我有一些问题:
在Rails 3.1.0中。rc6/RSpec 2.6.0,我试图测试我的"产品"资源的路由,路由如下:
resources :products, :except => [:edit, :update]
有效操作的路由工作,但我想确保编辑和更新路由不可调用。这是我正在尝试的:
it "does not route to #edit" do
lambda { get("/products/1/edit") }.should raise_error
end
失败/错误:lambda {get("/products/1/edit")}。应该raise_error预期异常,但没有引发任何异常#。/规范/路由/products_routing_spec。Rb:11:in ' block(3关)在《
…然而,当我运行
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
我失败/错误:get("/产品/1/编辑").should_notRoute_to (" product# edit",:id => "1")ActionController:: RoutingError:没有匹配"/products/1/edit"的路由
你知道这是怎么回事吗?我猜这应该很简单,但我似乎不明白。
我不知道为什么lambda会失败,但我不认为aspect -rails dsl是打算这样使用的。你试过这样的东西吗?
{ :get => "/products/1/edit" }.should_not be_routable
http://relishapp.com/rspec/rspec-rails/docs/routing-specs/be-routable-matcher 所以你不能指定它不路由到什么,但你可以指定它不被路由
你有退路吗?因为这可以解释为什么没有抛出错误,但确实试图计算route_to("products#edit", :id => 1)
会引发,因为路由不存在。