jQueryプラグインをテストしているときにリークの問題があります。この問題は、リテラルオブジェクトの値または関数を模倣したいときに発生します。Qunit:テスト漏れ
例:
test('Overwrite some default setting', function(){
$.fn.plugin.defaults.bar = 'foo';
});
test('Bar should be undefined', function(){
equals($.fn.plugin.defaults.bar, undefined);
});
最初のテストはデフォルトに「バー」VARを追加しましたので、このテストは失敗します。私は次のコードで修正しましたが、コピーのコピーを取ってもそれほどエレガントではありません。
$(function(){
/*
* Trolley Button Base: Options.
*/
var defaults_copy = $.extend({}, $.fn.plugin.defaults);
var setdown = {
setup : function(){
$.fn.plugin.defaults = $.extend({}, defaults_copy);
},
teardown : function(){ }
};
module('Test leakage', setdown);
test('Overwrite some default setting', function(){
$.fn.plugin.defaults.bar = 'foo';
});
test('Bar should be undefined', function(){
equals($.fn.plugin.defaults.bar, undefined);
});
})
また、jQuery名前空間にいくつかのオブジェクトがあると、各オブジェクトを複数コピーする必要がある場合は、少し面倒になることがあります。誰もがすべてのオブジェクトを「リセット」するためのより良い解決策を持っているのだろうかと疑問に思っていましたか?