weiß ich, das eine relativ alte Frage, aber ich habe festgestellt, dass diese auf welche Art von Test ab, die Sie renne. Ich fahre auch Rails 4 und RSpec 3.2, also bin ich mir sicher, dass sich einige Dinge geändert haben, seit diese Frage gestellt wurde.
anfordern Specs
before { host! "#{mock_subdomain}.example.com" }
Feature-Specs mit Capybara
before { Capybara.default_host = "http://#{mock_subdomain}.example.com" }
after { Capybara.default_host = "http://www.example.com" }
ich in der Regel Module in spec/support
erstellen, die wie folgt aussehen:
# spec/support/feature_subdomain_helpers.rb
module FeatureSubdomainHelpers
# Sets Capybara to use a given subdomain.
def within_subdomain(subdomain)
before { Capybara.default_host = "http://#{subdomain}.example.com" }
after { Capybara.default_host = "http://www.example.com" }
yield
end
end
# spec/support/request_subdomain_helpers.rb
module RequestSubdomainHelpers
# Sets host to use a given subdomain.
def within_subdomain(subdomain)
before { host! "#{subdomain}.example.com" }
after { host! "www.example.com" }
yield
end
end
In spec/rails_helper.rb
:
RSpec.configure do |config|
# ...
# Extensions
config.extend FeatureSubdomainHelpers, type: :feature
config.extend RequestSubdomainHelpers, type: :request
end
Dann können Sie wie so in Ihrem spec nennen:
feature 'Admin signs in' do
given!(:admin) { FactoryGirl.create(:user, :admin) }
within_subdomain :admin do
scenario 'with valid credentials' do
# ...
end
scenario 'with invalid password' do
# ...
end
end
end
ein kleiner Tipp - Anfrage ist verfügbar le als Methode und Instanzvariable. Es ist wahrscheinlich besser, über die Methode darauf zuzugreifen, um einen kleinen Abstand zwischen Ihnen und dem zugrunde liegenden RSpec-Code zu halten. – pat
Darf ich fragen, wie es mit der Methode gemacht wird? – lulalala
@lulalala 'request.host =" # {mock_subdomäne} .example.com "' – alf