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
方法刪除對象屬性的做法背後的想法或理由,你會說什麼?爲什麼這是件好事?它有好處嗎?縮小到真正大的物體時它是否只有好處?
我的想法:
我的理由(這可能是錯誤的),是我們保證垃圾收集運行每次測試後。
但是,如果在每次測試開始時setUp被調用,並且該值被覆蓋,是不是創建誤報的機會被刪除? –
在這種情況下是的,但是如果您在測試用例中初始化值(或不是),那麼犯錯很容易。我不確定我明白你爲什麼需要知道,誠實。 –