2013-03-06 63 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