2011-10-23 2 views
7

Я хочу, чтобы все мои модульные тесты использовали www.test.host вместо test.host.Rails testing default request host

Я попытался установить ENV['HTTP_HOST'] в config/environments/test.rb, но это не поняло.

Моя цель состоит в том, чтобы избежать редирект в моем тесте контроллера, выход осмотра response объекта в моем тесте:

#<ActionController::TestResponse:0x000001059ed378, ..., @header={"Location"=>"http://www.test.host", ... , @status=301, @body=["<html><body>You are being <a href=\"http://www.test.host\">redirected</a>.</body></html>"], ... , "REQUEST_METHOD"=>"GET", "SERVER_NAME"=>"example.org", "SERVER_PORT"=>"80",... , "HTTP_HOST"=>"test.host", "REMOTE_ADDR"=>"0.0.0.0" ...>> 

Если это имеет значение, я использую Rails3 и RSPEC2

ответ

11

Вы делаете это, установив request.host в свой тест. Вы можете сделать это в глобальном масштабе, добавив это в свой test_helper.rb (в Rails 3.1 в любом случае, не уверен в предыдущих версиях, но я думаю, что это похоже):

class ActionController::TestCase 
    setup do 
    request.host = "www.test.host" 
    end 
end