gpt4 book ai didi

ruby-on-rails - Rails RSpec 路由 : Testing actions in :except do NOT route

转载 作者:行者123 更新时间:2023-12-04 06:46:21 24 4
gpt4 key购买 nike

相当简单的问题(我曾想过),但我遇到了一些问题:

在 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

Failure/Error: lambda { get("/products/1/edit") }.should raise_error expected Exception but nothing was raised # ./spec/routing/products_routing_spec.rb:11:in `block (3 levels) in '



......然而,当我运行时
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end

我得到

Failure/Error: get("/products/1/edit").should_not route_to("products#edit", :id => "1") ActionController::RoutingError: No route matches "/products/1/edit"



知道这里发生了什么吗?我猜这应该很简单,但我似乎无法弄清楚。

最佳答案

我不知道为什么 lambda 会失败,但我不认为 rspec-rails dsl 打算这样使用。你有没有尝试过这样的事情?

{ :get => "/products/1/edit" }.should_not be_routable

http://relishapp.com/rspec/rspec-rails/docs/routing-specs/be-routable-matcher

所以你不能指定它不路由到什么,但你可以指定它不会被路由。

关于ruby-on-rails - Rails RSpec 路由 : Testing actions in :except do NOT route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com