Rails RSpec Routing:在:except do NOT route中测试动作



相当简单的问题(我本以为),但我有一些问题:

在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)会引发,因为路由不存在。

相关内容

  • 没有找到相关文章

最新更新