Еще одна вещь, которую следует помнить, - это обязательно использовать правильный экземпляр сеанса , чтобы вы могли правильно инкапсулировать помощники URL.
Интеграционные тесты предоставляют вам сеанс по умолчанию. Вы можете вызвать все методы сеанса прямо из ваших тестов
test "should integrate well" do
https!
get users_path
assert_response :success
end
Все эти помощники используют экземпляр сеанса по умолчанию, который, если не изменен, переходит на "www.example.com". Как уже упоминалось, хост можно изменить, выполнив host! ("My.new.host")
Если вы создаете несколько сеансов с использованием метода open_session, вы должны ВСЕГДА использовать этот экземпляр для вызова вспомогательных методов. Это будет правильно инкапсулировать запрос. В противном случае rails вызовет экземпляр сеанса по умолчанию, который может использовать другой хост:
test "should integrate well" do
sess = open_session
sess.host! "my.awesome.host"
sess.get users_url #=> WRONG! will use default session object to build url.
sess.get sess.users_url #=> Correctly invoking url writer from my custom session with new host.
sess.assert_response :success
end
Если вы намеревались использовать объект сеанса по умолчанию, вам также придется изменить этот хост:
test "should integrate well" do
sess = open_session
sess.host! "my.awesome.host"
host! sess.host #=> Set default session host to my custom session host.
sess.get users_url
end