gpt4 book ai didi

javascript - Qunit:测试泄漏

转载 作者:行者123 更新时间:2023-11-29 15:04:47 25 4
gpt4 key购买 nike

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

最佳答案

这是为 QUnit 设计的。在每次测试结束时,您应该清除所做的所有状态更改。我不知道有什么方法可以自动执行此操作——您必须编写代码来撤消您编写的任何测试代码的影响,如下所示:

test('Overwrite some default setting', function(){
// test code
$.fn.plugin.defaults.bar = 'foo';

// cleanup code
delete $.fn.plugin.defaults.bar;
});

test('Bar should be undefined', function(){
equals( $.fn.plugin.defaults.bar, undefined );
});

关于javascript - Qunit:测试泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com