代码:
var buster = require('buster'),
NumberCruncher = require('../src/NumberCruncher');
buster.testCase('Number Cruncher', {
setUp: function() {
this.numberCruncher = new NumberCruncher();
},
tearDown: function() {
delete this.numberCruncher;
},
'constructor returns numberCruncher': function() {
assert(this.numberCruncher instanceof NumberCruncher);
},
'object constructor correct': function() {
assert.equals(this.numberCruncher.constructor, NumberCruncher);
},
'can add numbers': function() {
buster.assert.equals(this.numberCruncher.add(5,3), 8, 'NumberCruncher cannot add');
}
});
背景
在setUp
中,我们创建一个对象并将其设置为this
(测试用例)的属性。在tearDown
我们正在删除所述属性。
问题:
如果您必须解释在tearDown
方法中删除对象属性的做法背后的想法或原因,您会说什么?为什么这是好事?它有好处吗?缩放到真正大的物体时,它是否只有好处?
我的想法:
我的推理(可能是错误的)是我们在每次测试运行后保证垃圾收集。
答案 0 :(得分:2)
是否保证垃圾收集是无关紧要的。更重要的是将值重置为已知状态(在本例中为undefined),以便通过从最后一个数据中获取脏数据来创建误报或漏报测试用例。