title: Test asynchronous functionality in Jasmine 2.0.0 with done()
body: <p>I am trying to implement a jasmine test on a simple promise implementation (asynchronous code) with the done() function and my test fails although the code being tested works perfectly fine.
  Can anyone please help me to figure out what is missing in my test?</p>
  
  <pre class="lang-js prettyprint-override"><code> var Test = (function () {
      function Test(fn) {
          this.tool = null;
          fn(this.resolve.bind(this));
      }
      Test.prototype.then = function (cb) {
          this.callback = cb;
      };
      Test.prototype.resolve = function (value) {
          var me = this;
          setTimeout(function () {
              me.callback(value);
          }, 5000);
      };
      return Test;
  })();
  
  describe("setTimeout", function () {
  
      var test, newValue = false,
          originalTimeout;
      beforeEach(function (done) {
          originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
          jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
  
          test = new Test(function (cb) {
              setTimeout(function () {
                  cb();
              }, 5000);
          });
          test.then(function () {
              newValue = true;
              console.log(1, newValue);
              done();
          });
      });
  
      it("Should be true", function (done) {
          expect(1).toBe(1);
  
          expect(newValue).toBeTruthy();
      });
  
      afterEach(function () {
          jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
      });
  });
  </code></pre>
  
  <p>the same test in jsfiddle: <a href="http://jsfiddle.net/ravitb/zsachqpg/" rel="nofollow">http://jsfiddle.net/ravitb/zsachqpg/</a></p>