我在测试我的 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 命名空间中有一些对象,如果我必须为每个对象获取多个副本,它可能会变得有点混乱。所以想知道是否有人有更好的解决方案来“重置”所有对象?