J'ai un problème de fuite lors du test de mon plugin jQuery. Le problème se produit lorsque je veux mettre en valeur une valeur ou une fonction sur un objet littéral.Qunit: Test de fuite
Exemple:
test('Overwrite some default setting', function(){
$.fn.plugin.defaults.bar = 'foo';
});
test('Bar should be undefined', function(){
equals($.fn.plugin.defaults.bar, undefined);
});
Ce test échoue car le premier test a ajouté le var 'bar' aux valeurs par défaut. Je l'ai corrigé avec le code suivant mais prendre une copie d'une copie n'a pas l'air très élégant.
$(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);
});
})
Aussi, si j'ai quelques objets dans l'espace de noms jQuery, il pourrait devenir un peu désordonné si je dois prendre plusieurs copies de chaque objet. Donc se demandait si quelqu'un avait une meilleure solution pour «réinitialiser» tous les objets?