| upgrading.js | |
|---|---|
| A number of things have changed with the release of jasmine 2.0 | describe("Upgrading to jasmine 2.0", function() { | 
| Custom Matchers |   describe("Custom Matchers", function() {
    beforeEach(function() { | 
| The  |       /* was:
         this.addMatchers({
      */
      jasmine.addMatchers({ | 
| A matcher is set up a bit different now.
The factory receives a  |         /* was:
           toBeCustom: function(expected) {
             var passed = this.actual == expected;
        */
        toBeCustom: function(util, customEqualityTesters) {
          return {
            compare: function(actual, expected) {
              var passed = actual == expected | 
| The comparison should now return an object with  For more information on the use of custom matchers. This page is intended to show the changes necessary to upgrade a 1.x suite to 2.0 |               /* was:
                this.message = function() {
                  return [
                    'Expected ' + this.actual + ' to equal ' + expected,
                    'Expected ' + this.actual + ' not to equal ' + expected
                  ];
                };
                return passed;
                });
                */
              return {
                pass: passed,
                message: 'Expected ' + actual + (passed ? '' : ' not') + ' to equal ' + expected
              };
            }
          };
        }
      });
    }); | 
| Use of custom matchers remains the same |     it("uses custom matchers", function() {
      expect(1).toBeCustom(1);
    });
  }); | 
| Asynchronous Specs |   describe("Asynchronous Specs", function() { | 
| We’ll pretend this is asynchronous for our tests below |     var asyncSetThing,
    somethingAsyncWithCallback = function(callback) {
      asyncSetThing = true;
      callback();
    }; | 
| The  |     /* was:
       it("calls an async thing and waits", function() {
         var asyncDone = false;
         somethingAsyncWithCallback(function() {
           asyncDone = true
         }); | 
| While it used to be necessary to keep track of the async state in the spec itself. |          waitsFor(function() {
           return asyncDone;
         });
     */ | 
| By having a  |     beforeEach(function(done) {
      somethingAsyncWithCallback(done);
    });
    /*
       runs(function() {
         expect(asyncSetThing).toBeTruthy();
       });
     });
     */
    it("will wait until async completes and calls done", function() {
      expect(asyncSetThing).toBeTruthy();
    });
  }); | 
| Spies |   describe("Spies", function() {
    it('should spy', function() {
      var spy = jasmine.createSpy('spy'); | 
| All the ways to tell the spy how to behave are no longer their own attribute directly on the spy.
There is a single  |        /* was:
        spy.andCallThrough();
        spy.andCallFake(function() {});
        spy.andThrow('error');
        spy.andReturn(1);
        */
      spy.and.callThrough();
      spy.and.callFake(function() {});
      spy.and.throwError('error');
      spy.and.returnValue(1); | 
| Basic setup and check remains the same |       spy('foo');
      spy('bar');
      expect(spy).toHaveBeenCalledWith('foo');
      expect(spy).toHaveBeenCalledWith('bar'); | 
| Similarly to behaviors, more advanced call checks are on the  |       /* was:
         expect(spy.mostRecentCall.args).toEqual(['bar']);
         expect(spy.callCount).toBe(2);
       */
      expect(spy.calls.mostRecent().args).toEqual(['bar']);
      expect(spy.calls.count()).toBe(2);
    });
  }); | 
| Clock |   describe("Clock", function() { | 
| The jasmine mock clock is now an instanciated object and not a global,
and it is now  |     beforeEach(function() {
    /* was:
       jasmine.Clock.useMock();
     */
      jasmine.clock().install();
    }); | 
| 
 |     it("uses the clock similarly", function() {
      /* was:
         jasmine.Clock.tick();
       */
      jasmine.clock().tick();
    }); | 
| Jasmine 2.0 removes the ability for addons to dynamically add  |     afterEach(function() {
      jasmine.clock().uninstall();
    });
  });
}); |