私は本当にユニットテストを開始したいので、私はQUnitを使って書いたプラグインにテストを追加することを考えました。しかし、プラグイン内にカスタムのクラスやオブジェクトを作成してプロパティとメソッドをグループ化し、いくつかの分離をしたいのです。さらに、これらは独自のプライベートメソッドを持っています。ユニットテストjQueryプラグイン内のプライベート関数
私は単体テストを可能にするために私のコードをリファクタリングする最良の方法の周りに頭を上げようとしています。私はすべてを公開したり、カスタムオブジェクトの束でウィンドウオブジェクトを汚染したりするという考えが嫌いです。しかし、それはどうしたらいいのでしょうか?
多分私はワークフローに関してもっと良いアイディアが必要なのかもしれません。多分、開発のためのスクリプトはすべて公開されていますが、私がGruntを使ってそれを縮小すると、それを無名関数に戻します。
とにかく、私はこのことを、私がプラグインの構造まで話していることの原油の例として素早く書きました。 'getNewPosition'メソッドをテストするために単体テストを書くにはどうすればよいですか?
(function($) {
"use strict";
// Custom Object
var MyClass = function(element) {
var speed = 1;
// Private Function
var getNewPosition = function() {
var currentPosition = parseFloat(element.css("top"));
return currentPosition + speed;
}
return {
// Public Function
update: function() {
var newPosition = getNewPosition();
element.css("top", newPosition.toString() + "px");
}
}
};
// jQuery Plugin
$.fn.myPlugin = function() {
var aryElements = [];
this.each(function() {
var myObj = new MyClass($(this));
aryElements.push (myObj);
});
$(window).on("scroll", function(event) {
$.each(aryElements, function(i, element) {
element.update();
});
});
return this;
};
}(jQuery));
ご協力いただければ幸いです!ありがとう!