我们为什么要在tearDown中删除[object]。[property](单元测试)

时间:2012-09-02 22:11:17

标签: javascript unit-testing buster.js

代码:

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方法中删除对象属性的做法背后的想法或原因,您会说什么?为什么这是好事?它有好处吗?缩放到真正大的物体时,它是否只有好处?

我的想法:

我的推理(可能是错误的)是我们在每次测试运行后保证垃圾收集。

1 个答案:

答案 0 :(得分:2)

是否保证垃圾收集是无关紧要的。更重要的是将值重置为已知状态(在本例中为undefined),以便通过从最后一个数据中获取脏数据来创建误报或漏报测试用例。