我有一个应用程序,Rails,用Cucumber测试。这个应用程序有一个Google Map,我想要一个Cucumber步骤来测试该地图是否有一些“Pins”(标记)。
据我所知,在DOM中找不到引脚,所以我想简单地测试一下页面是否使用某些参数调用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 maps API是否实际上将该调用转换为可见的引脚(尽管这很简洁);现在简单地测试是否会调用JavaScript方法。
如何测试page
是否包含某些JavaScript?上述Then
步骤中的代码仅测试实际内容,并省略<script>
代码中的内容。
答案 0 :(得分:0)
诀窍是不使用have_content
,而是使用更通用的选择器,例如have_xpath
:
page.should have_xpath "//script[contains(.,'map.addMarker(#{camping.latitude}, #{camping.longitude}, \"#{camping.name}\")')]"