Я не уверен, насколько хорошо это применимо в Cucumber (здесь используется musta), но, попробовав несколько рекомендаций в других местах, похоже, это работает надежно:
def in_subdomain(str)
# test.host == default testing domain, feel free to change to match your usage
@request.host = "#{str}.test.host"
end
А затем, прежде чем позвонить get
, вам просто нужно убедиться, что вы in_subdomain('subdomain-fuuuuuu')
. Это правильно устанавливает URL и, по крайней мере, current_subdomain
(я не проверял все ), перенаправляет без указания субдомена, оставшегося в поддомене, и все перенаправления в другие субдомены (или :subdomain => false
) все еще установите правильное значение redirected_to.
Эти (высококачественные, я уверен, вы можете сказать) тесты проходят, например, и они проверяют current_subdomain в контроллере:
should "show on the owner's subdomain" do
in_subdomain(@user.domain)
get :show, :id => @user.things.first.id
assert_response :success
end
should "not show on another users' subdomain" do
in_subdomain(@random_user.domain)
get :show, :id => @user.things.first.id
assert_redirected_to user_url(@random_user, :subdomain => @random_user.domain)
end
should "not show on a non-existent subdomain" do
in_subdomain("cthulhu-fhtagn")
get :show, :id => @user.things.first.id
assert_redirected_to root_url(:subdomain => false)
end