feat($interval): add a service wrapping setInterval

The $interval service simplifies creating and testing recurring tasks.
This service does not increment $browser's outstanding request count,
which means that scenario tests and Protractor tests will not timeout
when a site uses a polling function registered by $interval. Provides
a workaround for #2402.

For unit tests, repeated tasks can be controlled using ngMock$interval's
tick(), tickNext(), and tickAll() functions.
This commit is contained in:
Julie
2013-09-13 12:47:05 -07:00
committed by Vojta Jina
parent a80e96cea1
commit 2b5ce84fca
7 changed files with 725 additions and 0 deletions

View File

@@ -165,6 +165,20 @@ describe('$timeout', function() {
}));
it('should cancel the promise', inject(function($timeout, log) {
var promise = $timeout(noop);
promise.then(function(value) { log('promise success: ' + value); },
function(err) { log('promise error: ' + err); },
function(note) { log('promise update: ' + note); });
expect(log).toEqual([]);
$timeout.cancel(promise);
$timeout.flush();
expect(log).toEqual(['promise error: canceled']);
}));
it('should return true if a task was successfully canceled', inject(function($timeout) {
var task1 = jasmine.createSpy('task1'),
task2 = jasmine.createSpy('task2'),