Rspec - 如何检查第三方js(谷歌地图api)是否已加载

时间:2018-02-07 13:53:34

标签: ruby-on-rails rspec ruby-on-rails-5

我在我的rails应用中使用了一个gem geocomplete_rails(这是一个地方自动完成插件)。这个宝石需要谷歌地图Api。因此,每当我在使用此地理填充的网页上运行测试时,我都会收到一条错误消息(使用page.driver.console_messages):

{:line_number=>54278, :message=>"ReferenceError: Can't find variable: google", :source=>"http://127.0.0.1:51330/assets/application-a820c847c6467fc2276afc746aeae8edab24cca81edfff6ea38bf8a38beb3151.js"}

我加载google地图api js的方式在我的application.html.erb

<%= javascript_include_tag 'https://maps.googleapis.com/maps/api/js?key=<MY_OWN_API_KEY>&libraries=places' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

所以我的问题是我有办法检查我的测试环境中是否已正确加载Google Maps Api js?这样我就可以发现上面提到的错误消息是由于缺少google map api还是由geocomplete本身造成的。

*注意:geocomplete在开发和生产环境中完美运行。我正在使用capybara-webkit进行js测试。

1 个答案:

答案 0 :(得分:0)

您不需要验证它是否已正确加载 - 您的测试环境中的代码中显然存在需要解决的错误。

进行全栈集成测试时,您不应该仅仅为了测试而注入任何特殊行为。它应该全部由应用程序代码处理,该代码将在dev / production中运行属性。

我猜测,对于这个特定的错误,你有javascript代码试图在加载之前访问google对象。我猜这个错误只是在初始页面加载时引起的,因为你使用了Tubolinks。