2016-08-09 104 views
0

Meine App integriert den Google Maps JS-API-/Google Places-API-Web-Service erfolgreich, um einige Autocomplete Dropdown-Listen zu erstellen. Ich habe meinen Google API-Browserschlüssel eingerichtet, damit Entwickler (localhost), Staging und Produktions-URLs funktionieren. Auf jeder Seite, auf der dieser Dienst verwendet wird, werden die Abnahmetests (unter Verwendung von 127.0.0.1) unterbrochen. Zum Beispiel:Google API erkennt */127.0.0.1 nicht: *

Capybara::Poltergeist::JavascriptError: 
    One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details). 

    Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error 
    Your site URL to be authorized: http://127.0.0.1:52724/clients/3 
    Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error 
    Your site URL to be authorized: http://127.0.0.1:52724/clients/3 
     at https://maps.googleapis.com/maps/api/js?v=3.exp&key=(my_browser_key)&signed_in=true&libraries=places:34 in hb 

Ich habe versucht, verschiedene Konfigurationen 127.0.0.1 in meinem Browser Key Anmeldeinformationen hinzufügen, die nicht gearbeitet haben, wie zum Beispiel: http://127.0.0.1:* , */127* , and */127.0.0.1:\d\d\d\d\d/*

Das letzte sieht komisch aus, weil jeder neue Lauf von Meine Testsuite generiert 5 zufällige Ziffern nach 127.0.0.1 :, wie im obigen Fehler zu sehen ist.

* Ich möchte JS-Fehler nicht ignorieren, indem ich meine Poltergeist-Konfiguration wie im Fehler erwähnt ändere. Mit dem gesagt, ich benutze den Service tatsächlich nicht für einen dieser Akzeptanztests. Ich möchte die Google-Funktionalität nicht testen. Ich möchte die benutzerdefinierte Funktionalität testen, die diese Dropdown-Menüs umgibt.

+0

Diese App verwendet Angular 1 auf der Vorderseite und Rails 4 auf der Rückseite. Wenn aus irgendeinem Grund relevant ist. –

Antwort

1

Konnte dies umgehen, indem ich den app_host und server_port direkt in meine Capybara-Konfiguration setzte. Dank der angenommenen Antwort here. Ich habe diese auf meine spec_helper Datei:

def set_host(host) 
    default_url_options[:host] = host 
    Capybara.app_host = "http://" + host 
end 

RSpec.configure do |config| 
    config.before(:each) do 
    Capybara.current_driver = :poltergeist 
    Capybara.javascript_driver = :poltergeist 
    set_host("127.0.0.1:30111") 
    Capybara.server_port = 30111 
    end 
end 

Dann habe ich genau dieses server_port in meinem Google-API-Schlüssel Anmeldeinformationen angegeben. Abnahmetests bestehen jetzt.

UPDATE:

Es scheint, dass die Google-Anweisungen sind nur veraltet und unvollständig (seufz). Nach mehr Experimenten, einfach 127.0.0.1 ohne * oder / erledigt den Job.

Die obige Lösung funktioniert auch.