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); }); });