由于我的 Cucumber Features 没有测试 Google Maps JavaScript 是否真的有效,所以我决定简单地为那个 JavaScript 添加一个小的测试扩展。
JavaScript 现在只需获取参数latitude=8&longitude=52
并使用它,getCurrentPosition
在给定时进行模拟。可以使用附加参数test
来呈现表示地图“中心”的字符串,这是可测试的。
$(document).ready(function(){
if ((urlParam('latitude') >= 0) && (urlParam('longitude') >= 0)) {
var latitude = urlParam('latitude')
var longitude = urlParam('longitude')
window.navigator.geolocation.getCurrentPosition = function(success) {
var position = {"coords" : { "latitude": latitude, "longitude": longitude }};
if (urlParam('test') >= 0) { #extension for testability
$("#map_canvas").html("latitude: "+ latitude +" longitude: "+ longitude);
}
success(position);
}
}
});
urlParam()
确定 URL 中参数的辅助函数在哪里:null
如果找不到则返回。
额外的好处是地图是“可链接的”,您现在可以制作一个 URL 并使用它来使地图居中。
我的步骤定义是:
Then /^it should center the map on my current location$/ do
visit maps_path({:latitude => 20, :longitude => 20, :test => true})
page.should have_content "latitude: 20 longitude: 20"
end