1
我有一個由rspec超過一千個測試覆蓋的大型應用程序。國際化域名重定向打破我的測試
我們剛剛作出的選擇來重定向任何頁面,如:
/
/foo
/foo/4/bar/34
...
TO:
/en
/en/foo
/fr/foo/4/bar/34
....
所以我做了一個在application.rb中過濾器像這樣前:
if params[:locale].blank?
headers["Status"] = "301 Moved Permanently"
redirect_to request.env['REQUEST_URI'].sub!(%r(^(http.?://[^/]*)?(.*))) { "#{$1}/#{I18n.locale}#{$2}" }
end
它工作的很好,但是......它打破了我的很多測試,例如:
it "should return 404" do
Video.should_receive(:failed_encodings).and_return([])
get :last_failed_encoding
response.status.should == "404 Not Found"
end
要解決這個測試中,我應該怎麼做:
get :last_failed_encoding, :locale => "en"
但是......認真我不希望解決我的所有考試一個接一個......
我試着使區域設置的默認參數是這樣的:
class ActionController::TestCase
alias_method(:old_get, :get) unless method_defined?(:old_get)
def get(path, parameters = {}, headers = nil)
parameters.merge({:locale => "fr"}) if parameters[:locale].blank?
old_get(path, parameters, headers)
end
end
...但不可能使這項工作... 任何想法?
如果您直到最後讀到,您將看到這已不再是問題,我已經解決了我的區域設置問題。我現在的問題是我的測試 – Mike 2010-04-08 10:03:17