1

我有一个使用 Cucumber 测试的应用程序 Rails。这个应用程序有一个谷歌地图,我想要一个 Cucumber-step 来测试该地图是否有一些“引脚”(标记)。据我所知,在 DOM 中找不到 pin,所以我想简单地测试一下页面是否map.addMarker()使用某些参数调用。

Then /^I should see the top 50 campings on the map$/ do
  Camping.geocoded.top(50).each do |camping|
    page.should have_content /map\.addMarker\(#{camping.latitude}, #{camping.longitude}, "#{camping.name}"\)/
  end
end

该页面的底部有一个脚本标记,其中填充了一个content_for,来源有:

<script>
  $(document).ready(map.addMarker(51.7780246, 5.97571, "Bij Ons"))
</script>
</body>

map.addMarker是一些自定义 JavaScript,它为地图添加了一个标记。

我不(真的)有兴趣测试我的自定义 JavaScript 和 Google 地图 API 是否真的将该调用转换为可见的 pin(尽管那会很整洁);现在只需测试该 JavaScript 方法是否被调用就可以了。

如何测试是否page包含某些 JavaScript?上述步骤中的代码Then仅测试实际内容并省略<script>标签中的内容。

4

1 回答 1

0

诀窍是不使用have_content,而是使用更通用的选择器,例如have_xpath

page.should have_xpath "//script[contains(.,'map.addMarker(#{camping.latitude}, #{camping.longitude}, \"#{camping.name}\")')]"
于 2013-03-06T14:08:32.560 回答