Vấn đề đơn giản (tôi đã nghĩ), nhưng tôi đang gặp một số vấn đề:Rails RSpec Routing: Thử nghiệm các hành động trong: ngoại trừ KHÔNG tuyến
Trong Rails 3.1.0.rc6/RSpec 2.6.0 , tôi đang cố gắng để kiểm tra định tuyến nguồn 'sản phẩm' của tôi, chuyển như thế này:
resources :products, :except => [:edit, :update]
Định tuyến cho các hành động có giá trị công trình, nhưng tôi muốn đảm bảo rằng các chỉnh sửa và cập nhật các tuyến đường không có thể gọi được. Dưới đây là những gì tôi đang cố gắng:
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 '
... Chưa hết, khi tôi chạy
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
tôi nhận được
Failure/Error: get("/products/1/edit").should_not route_to("products#edit", :id => "1") ActionController::RoutingError: No route matches "/products/1/edit"
Bất kỳ ý tưởng những gì đang xảy ra ở đây? Tôi đoán điều này khá đơn giản, nhưng tôi không thể hình dung ra được.
Chúng tôi có một người chiến thắng. Strange - Tôi nghĩ Rails 2 được sử dụng để xử lý "lỗi nâng cao" lambdas, nhưng rõ ràng là không 3.1. Thậm chí không nhận thức được phương pháp be_routable - cảm ơn rất nhiều. – PlankTon
Rất hữu ích! Chỉ cần một lưu ý nhanh: kiểm tra trên PHẢI nằm trong /spec/routing/xxxx.rb hoặc nó sẽ thất bại với một lỗi. Bạn không thể, ví dụ, có điều này trong /spec/requests/xxxx.rb –