2016-11-28 4 views
0

この質問は他の「どのようにプライベート関数をテストするのですか」の質問とは異なり、パブリックメソッドを持たないリーフレットプラグインです。コンストラクタの結果は返されません。サンプルオーバーレイ(カルマ/ジャスミン)のリーフレットプラグインのプライベート機能をテストする

私が取り組んでいるのはおおよそ、リーフレットの地図に緯度/経度の行を入れるリーフレットプラグインのLeaflet.Gridに基づいています。

したがって、Leaflet.Grid's _dec2dmsなどの関数をテストするにはどうしますか?

これは公開されていない機能ですが、テストができる数学を行っています。 (私のプラグインでは、複雑な数学を行ういくつかの関数がありますが、私は既にいくつかの辺のケースを見てきたので、それらをテストする必要があります)

あなたはプラグインの外に移動し、this._dec2dms_dec2dms、またはリーフレットを全面的に嘲笑しますか?

私は偽のリーフレットを提供することに傾いており、それを通してテストしていますが、私はもっと簡単な方法があると思っています。

答えて

1

リーフレットのメンテナーはこちら。

説明している内容は、unit tests of Leaflet.Drawの近くです。

これらのテスト(正確にはKarma configuration)には最新のリーフレットファイルが含まれています。

私の考えでは、プラグインのテストを開発するときに元のライブラリを組み込むことをお勧めします。これにより、プラグインが模擬ではなくライブラリと互換性があることが保証されます。また、これにより、新しいバージョンで改ざんが導入された場合にライブラリを更新するときに、テストが失敗するのを簡単に確認できます。

+0

これを確認するには、Leaflet.Drawの 'L.LatLngUtil'のようにヘルパー関数を' L'の中に置くことを推奨していますので、直接テストすることができますし、プラグインをインスタンス化するテストもできますリーフレットのテスト可能な動作を確認していますか?それは 'L'名前空間を汚染していませんか? – mtfurlan

+0

はい、これは現在受け入れられている解決策です。より良いソリューション(ES6モジュール)を実装するまでは、適切に制御されている限り、プラグインは 'L'名前空間に多くのものを入れても大丈夫だと感じています。 – IvanSanchez

関連する問題