1

キュウリの動作を介してアプリケーションを開発し、HTML5getCurrentPositionを含めたいと思います。

SeleniumのFirefoxブラウザまたはCucumberのCapybaraブラウザのいずれかからそのようなジオロケーションを送信する方法はありますか?

私のアプリケーションはnavigator.geocoder.getCurrentPosition(some_callback)、ユーザーに場所を要求するために呼び出すようになりました。最近のブラウザとほとんどのモバイルブラウザは、ユーザーに自分の場所をアプリケーションに送信するかどうかを尋ねます。この動作を偽造して、テスト時にlat:longをアプリケーションに送信したいと思います。

4

1 に答える 1

0

私の 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
于 2013-03-12T09:51:55.480 に答える