lundi 9 mars 2015

Unit test with promises: How to mock $q or know deferred has been called

I have a service that are using promises. Here is a simplified example of my service:



angular.module('myService').service('popup', [
'$q', function(
$q ) {

this.alert = function(myValue) {
var deferred = $q.defer();

if (myValue = 0) {
deferred.resolve('myValue is null');
} else {
deferred.reject('myValue isn\'t null');
}
return deferred.promise;
}
}]);


I would like a unit test like:



  • Given: myValue = 0

  • When: myService.alert()

  • Then: deferred.resolve has been called


The problem is, I understand since 'deferred' is a var inside my service, I can't access it in my unit tests (to mock it). So I need to mock $q, and I don't have any idea how to do that (I've tried some ways without success).


Anyone know how I can mock $q or know if deferred.resolve() has been called?


Aucun commentaire:

Enregistrer un commentaire