Edit in JSFiddle

describe('how to test with promises', function () {
  var deferred;

  beforeEach(function () {
    inject(function ($q) {
      deferred = $q.defer();
    });
  });

  it('does a thing one way', function () {
    deferred.promise.then(function (value) {
      expect(value).toBe(4);
    });
    deferred.resolve(10);
  });

  it('does a thing another way', function () {
    var handler = jasmine.createSpy('success');
    deferred.promise.then(handler);
    deferred.resolve(10);
    expect(handler).toHaveBeenCalledWith(4);
  });
});