我的应用成功整合了Google Maps JS API / Google Places API网络服务,以创建一些Autocomplete下拉列表。我设置了google api浏览器密钥,因此开发(localhost),暂存和生产网址都有效。但是,在使用此服务的任何页面上,验收测试(使用127.0.0.1)都会中断。例如:
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
我尝试将不同的127.0.0.1配置添加到我的浏览器密钥凭证中但没有用,例如:
http://127.0.0.1:* , */127* , and */127.0.0.1:\d\d\d\d\d/*
最后一个看起来很有趣,因为我的测试套件的每次新运行在127.0.0.1之后产生5个随机数字,如上面的错误所示。
*我不想通过更改错误中提到的poltergeist配置来忽略JS错误。话虽如此,我实际上并没有在任何这些验收测试中使用该服务。我不想测试谷歌功能,我想测试围绕这些下拉菜单的自定义功能。
答案 0 :(得分:3)
能够通过将app_host和server_port直接设置到我的Capybara配置中来环绕这个。感谢接受的答案here。我将其添加到我的spec_helper文件中:
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
然后我在我的Google API密钥凭据中指定了这个确切的server_port。验收测试现在通过了。
更新:
Google的说明似乎已过时且不完整(叹息)。经过多次实验后,只需127.0.0.1
*
或/
即可完成此任务。
上述解决方案也适用。