ruby-on-rails - test_helper - ruby controller test




Kann ein Benutzeragent in einem Rails-Integrationstest oder einer Spezifikation angegeben werden? (4)

Ich habe das vorher in einer Rails 2 App in einem ActionController::IntegrationTest mit gemacht

get '/', {}, {:user_agent => "Googlebot"}

Dies scheint aber in Rails 3 nicht mehr zu funktionieren.

Was soll ich machen?



Für mich selbst habe ich in einem Controller-Test in rspec3 verwendet

request.env["HTTP_USER_AGENT"] = "Hello"

Bevor Sie die Anfrage stellen


Keine der oben genannten Antworten hat bei mir funktioniert. Das Folgende hat schließlich bei einem Test mit einem Rspec-Controller funktioniert:

@request.user_agent = "a MobileDevice/User-Agent"
post :endpoint, param: 2354

Wenn Sie eine Sammlung von Spezifikationen haben, für die alle ein spezifischer Benutzeragent erforderlich ist, finden Sie möglicherweise die folgenden Hilfen zum TROCKNEN Ihrer Spezifikationen:

Definiere dies irgendwo (zB spec_helper.rb ):

module DefaultUserAgent

  def post(uri, params = {}, session = {})
    super uri, params, {'HTTP_USER_AGENT' => MY_USER_AGENT}.merge(session)
  end

  def get(uri, params = {}, session = {})
    super uri, params, {'HTTP_USER_AGENT' => MY_USER_AGENT}.merge(session)
  end

end

include DefaultUserAgent Sie dann einfach include DefaultUserAgent wenn Sie es benötigen.





integration-testing