1

代码:

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,你会说什么?为什么这是一件好事?它有好处吗?它只有在扩展到非常大的对象时才有好处吗?

我的想法:

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

4

1 回答 1

2

垃圾收集是否得到保证是无关紧要的。更重要的是将该值重置为已知状态(在本例中为未定义状态),这样就没有机会通过使用最后一个脏数据来创建误报或误报测试用例。

于 2012-09-02T22:19:41.680 回答