Мне нужно проверить две вещи:
- что некоторые старые пути правильно перенаправлены на определенные новые пути
- что редирект 301, а не 302.
Я использую Капибару для приемочных испытаний, но это не справится с №2. Я могу проверить, что перенаправление происходит, но происходит тихо, поэтому я не вижу, что это был 301.
Тесты контроллера не могут обработать # 1. Глаголы «get», «post» и т. Д., Которые rspec предоставляет для тестов контроллера, позволяют передавать только действие, а не конкретный путь, а перенаправление осуществляется в виде одного действия на основе пути, как показано ниже:
# controller
class ExampleController
def redirect301
redirect_to case request.path
when '/old_a'
'/new_a'
when '/old_b'
'/new_b'
end, :status => 301
end
end
# routes.rb
['old_a', 'old_b'].each do |p|
map.connect p, :controller => :example, :action => :redirect301
end
Итак, что мне делать?