私の 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