2013-03-06 41 views
1

我有一个应用程序,Rails,用黄瓜测试。这个应用程序有一个谷歌地图,我想要一个黄瓜步骤来测试该地图是否有一些“引脚”(标记)。 据我所知,在DOM中找不到引脚,所以我想简单地测试页面是否调用map.addMarker()与某些参数。javascript在黄瓜中的测试内容

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和谷歌地图API是否真的把这个调用变成了一个可见的引脚(尽管那样会很整洁);现在简单地测试一下JavaScript方法是否会被调用。

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

回答

0

诀窍是不要使用have_content,但更通用的选择,像have_xpath

page.should have_xpath "//script[contains(.,'map.addMarker(#{camping.latitude}, #{camping.longitude}, \"#{camping.name}\")')]" 
+1

这并没有为我工作,我需要添加上可见的伪'page.should have_xpath“//脚本[contains(。,'blah')]“,visible:false' – 2014-01-31 16:51:06