diff options
| -rw-r--r-- | src/ngMock/angular-mocks.js | 9 | ||||
| -rw-r--r-- | test/ngMock/angular-mocksSpec.js | 17 | 
2 files changed, 22 insertions, 4 deletions
| diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 05fdc4ed..d0c1b9b2 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -105,16 +105,17 @@ angular.mock.$Browser = function() {     */    self.defer.flush = function(delay) {      var flushedSomething = false; +        now = self.defer.now;      if (angular.isDefined(delay)) { -      self.defer.now += delay; +      now += delay;      } else {        if (self.deferredFns.length) { -        self.defer.now = self.deferredFns[self.deferredFns.length-1].time; +        now = self.deferredFns[self.deferredFns.length-1].time;        }      } -    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) { +    while (self.deferredFns.length && self.deferredFns[0].time <= now) {        flushedSomething = true;        self.deferredFns.shift().fn();      } @@ -126,6 +127,8 @@ angular.mock.$Browser = function() {          throw Error('No deferred tasks with delay up to ' + delay + 'ms to be flushed!')        }      } + +    self.defer.now = now;    };    /** diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 88e1876f..67fd13a1 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -404,7 +404,7 @@ describe('ngMock', function() {        expect(function() {$timeout.flush(100);}).toThrow();        expect(log).toEqual(['t1']); -      $timeout.flush(900); +      $timeout.flush(1000);        expect(log).toEqual(['t1', 't2']);        expect(function() {$timeout.flush();}).toThrow();      }); @@ -425,6 +425,21 @@ describe('ngMock', function() {      }); +    it('should not update the current time if an exception is thrown during a flush', function() { +      $timeout(log.fn('t1'), 100); +      $timeout(log.fn('t2'), 101); + +      expect(function() { $timeout.flush(90); }).toThrow(); +      expect(function() { $timeout.flush(90); }).toThrow(); + +      $timeout.flush(100); +      expect(log).toEqual(['t1']); + +      $timeout.flush(1); +      expect(log).toEqual(['t1', 't2']); +    }); + +      describe('verifyNoPendingTasks', function() {        it('should throw an exception when not flushed', function() { | 
