2012-09-02 22 views
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方法刪除對象屬性的做法背後的想法或理由,你會說什麼?爲什麼這是件好事?它有好處嗎?縮小到真正大的物體時它是否只有好處?

我的想法:

我的理由(這可能是錯誤的),是我們保證垃圾收集運行每次測試後。

回答

2

是否保證垃圾回收是無關緊要的。更重要的是將值重置爲已知狀態(在這種情況下,未定義),以便通過從最後一個數據中獲取髒數據來創建錯誤肯定或錯誤否定測試用例。

+0

但是,如果在每次測試開始時setUp被調用,並且該值被覆蓋,是不是創建誤報的機會被刪除? –

+0

在這種情況下是的,但是如果您在測試用例中初始化值(或不是),那麼犯錯很容易。我不確定我明白你爲什麼需要知道,誠實。 –

相關問題