У меня проблема с утечкой при тестировании моего плагина jQuery.Проблема возникает, когда я хочу смоделировать значение или функцию для литерального объекта.
Пример:
test('Overwrite some default setting', function(){
$.fn.plugin.defaults.bar = 'foo';
});
test('Bar should be undefined', function(){
equals( $.fn.plugin.defaults.bar, undefined );
});
Этот тест не пройден, поскольку первый тест добавил переменную 'bar' кпо умолчанию.Я исправил это с помощью следующего кода, но взять копию копии не выглядит очень элегантно.
$(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, это может стать немного грязным, если мне придется делать несколько копий каждого объекта.Интересно, есть ли у кого-нибудь лучшее решение для «сброса» всех объектов?