I have the following jasmine test:
it(\'should resolve promise\', inject(function ($q, $rootScope) {
function getPromise(){
var deferred = $q.de
I think the $rootScope.$apply()
is being called too soon in your case. This should work:
function getPromise(){
var deferred = $q.defer();
setTimeout(function(){
deferred.resolve(true);
$rootScope.$apply();
}, 1000);
return deferred.promise;
}
Update
You can inject mock $timeout service and resolve the promise in that explicitly using $timeout.flush()
.
it('should resolve promise', inject(function ($q, $timeout, $rootScope) {
function getPromise(){
var deferred = $q.defer();
$timeout(function(){
deferred.resolve(true);
}, 1000);
return deferred.promise;
}
// ...
$timeout.flush();
// ...