2013-12-12 18 views
8

Đối với các bài kiểm tra của tôi, tôi cần một bộ điều khiển nơi tôi có thể đặt các thông số của riêng mình. Với các thông số tôi là một trong những bạn nhận được khi gọi controller.paramsLàm thế nào để khai thác các thông số từ bộ điều khiển?

{"action"=>"show", 
"controller"=>"merchants", 
"wine_id"=>"1", 
"id"=>"346343"} 

Vấn đề là, tôi không biết những gì một cách thích hợp cho stubbing là ở đây. Có ba lần xuất hiện:

  • controller.request.env['action_dispatch.request.path_parameters']
  • controller.params
  • controller.url_options[:_recall]

Trong cả ba cùng một thông tin được lưu trữ, nhưng cách giao tiếp để thiết lập các giá trị là gì?

+0

Bạn có ý nghĩa cụ thể trong bộ thử nghiệm của mình không? – Donovan

+0

Bạn đang nói rằng bạn truy cập vào các tham số thông qua cả ba phương pháp? –

+0

@Donovan Có @PeterAlfvin Không. Có vẻ như cuối cùng, tất cả đều nằm xuống 'controller.request.env ['action_dispatch.request.path_parameters']' nhìn vào mã nguồn. –

Trả lời

12

Cách thông thường để truy cập thông số là controller.params. Vì vậy, tôi sẽ khuyên bạn nên cung cấp thông số

controller.stub(:params).and_return({:param1 => "value", :param2 => "value"}) 
+0

Vâng, từ một trong những làm việc trong bộ điều khiển chắc chắn, nhưng Rails chính nó đi qua controller.request.path_parameters khi làm việc với các tham số nội bộ. Phương pháp sơ khai rất tiện dụng, không biết điều đó. –

+0

Tôi đang đặt điều này trong thử nghiệm RSpec của tôi bên trong một ví dụ, nhưng tôi nhận được một 'LocalJumpError: không có khối nào được đưa ra từ C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/rspec-rails -3.5.2/lib/rspec/rails/example/controller_example_group.rb: 77: trong 'class_exec'' –

Các vấn đề liên quan