【发布时间】:2011-04-27 01:25:27
【问题描述】:
我需要测试两件事:
- 某些旧路径正确重定向到某些新路径
- 重定向是 301,而不是 302。
我正在使用 Capybara 进行验收测试,但这无法处理 #2。我可以测试重定向是否发生,但它是静默发生的,所以我看不出它是 301。
控制器测试无法处理 #1。 rspec 为控制器测试提供的“get”、“post”等动词只允许你传入一个动作,而不是特定的路径,并且重定向是基于路径在单个动作中实现的,如下所示:
# 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
那么,我该怎么办?
【问题讨论】:
标签: ruby-on-rails testing rspec