AngularJS not being executed in unit tests
Unit testing in Angular can be tricky because of the digest cycle. Your test code might have multiple references to $scope.apply(); in order to get promises moving.
Recently I was testing something that happened after a $timeout(). In the unit test file, I was unable to see the results that I expected. I tried $scope.apply() but that didn’t do anything.
After viewing the $timeout documentation, the answer was right there…
In tests you can use
$timeout.flush()to synchronously flush the queue of deferred functions.
So that’s it… $timeout.flush() in your unit test… FTW.