GOOGLE ADS

Donnerstag, 21. April 2022

Wie ändere ich die Standarddomäne „www.example.com“ zum Testen in Rails?

Ich habe eine Rails-Anwendung, die sich je nach Domäne, auf die zugegriffen wird, unterschiedlich verhält (z. B. www.myapp.com wird anders als user.myapp.com aufgerufen). In der Produktion funktioniert das alles gut, aber mein Testcode sieht immer einen Hostnamen von "www.example.com".

Gibt es eine saubere Möglichkeit, einen Test den Hostnamen angeben zu lassen, auf den er vorgibt zuzugreifen?


Lösung des Problems


  • Integrations-/Anforderungsspezifikationen (erben von ActionDispatch::IntegrationTest):

     host! 'my.awesome.host'



Siehe die Dokumentation, Abschnitt 5.1 Helpers Available for Integration Tests.

Alternativ konfigurieren Sie es global für Anforderungsspezifikationen auf der Ebene spec_helper.rb:

RSpec.configure do |config|
config.before(:each, type::request) do
host! 'my.awesome.host'
end
end


  • Controller-Spezifikationen (erben von ActionController::TestCase)

     @request.host = 'my.awesome.host'



Siehe die Dokumentation, Abschnitt 4.4 Verfügbare Instanzvariablen.


  • Funktionsspezifikationen (über Capybara)

     Capybara.default_host = 'http://my.awesome.host'
    # Or to configure domain for route helpers:
    default_url_options[:host] = 'my.awesome.host'



Aus der Antwort von @AminAriana


  • Spezifikationen anzeigen (erben von ActionView::TestCase)

     @request.host = 'my.awesome.host'



...oder über RSpec:

 controller.request.host = 'my.awesome.host'

Siehe die rspec-rails View-Spec-Dokumentation.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...