title: Why do we do delete [object].[property] inside of tearDown (unit testing)
body: <p><strong>Code:</strong></p>
  
  <pre><code>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');
      }
  });
  </code></pre>
  
  <p><strong>Background:</strong></p>
  
  <p>In <code>setUp</code>, we are creating an object and setting it as a property of <code>this</code> (the testcase). In <code>tearDown</code> we are deleting said property.</p>
  
  <p><strong>Question:</strong></p>
  
  <p>If you had to explain the thought or reason behind the practice of deleting object properties in the <code>tearDown</code> method, what would you say? Why is this a good thing? Does it have benefits? Does it only have benefits when scaled to really big objects?</p>
  
  <p><strong>My Thoughts:</strong></p>
  
  <p>My reasoning (which may be wrong), is that we are guaranteeing garbage collection after each test is run.</p>