maquette angularjs service pour les tests unitaires à l'aide de jasmin
J'ai Angulaire Application et je veux créer des scénarios de test unitaire pour l'aide jasmin.
Dans mon AngularJS application, j'ai un service :
var canceler;
var myServices = angular.module('myServices', ['ngResource'])
myServices.factory('getData', ['$http', '$q', function($http, $q){
var canceler;
return {
setData: function(url, callback, error) {
canceler = $q.defer();
$http.post(url, {}, {timeout:canceler.promise}).success(callback).error(error);
},
abort: function(){ canceler.resolve();}
}
}]);
Ce service est utilisé par le contrôleur.
Maintenant, comment puis-je fournir une maquette pour ce "getData" service de l'injecteur, je suis en utilisant en controllerSpecs.js (pour les tests unitaires à l'aide de jasmin).
Pour la référence, le code de controllerSpecs.js est défini dans Erreur lors de l'utilisation de Jasmin avec AngularJS.
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela
et l'utilisation de la maquette de service
Vous pouvez utiliser AngularJS est
$provide
service. Cette page montre comment, à se moquer de la fonctionnalité d'un service à l'aide de Jasmin espions. En gros, dans votre Jasmin test, vous pouvez inclure:Cela dit AngularJS qu'au lieu d'utiliser le réel
getData
service, la maquette sera utilisé à sa place. Dans cet exemple, à l'aide d'un Jasmin d'espion pour la simulation permet de créer facilement des attentes au sujet de comment et quand les getData service est appelé par le contrôleur. Vous pouvez également définirgetDataMock
à tout autre objet, si elle fait sens pour soutenir la même API que le réelgetData
service.Pour les points de bonus, vous pouvez spécifier le
getDataMock
objet dans un fichier séparé, de sorte que la fantaisie peut être facilement utilisé dans un certain nombre de tests unitaires où la chose étant testés utilisegetData
. Toutefois, cela nécessite un peu de configuration avec tout ce que Jasmine coureur vous êtes en utilisant.C'est tout en supposant que vous souhaitez unité de test de la contrôleur. Si vous voulez de l'unité de test de la
getData
service lui-même, AngularJS fournit une belle se moquant de l'utilitaire spécifiquement pour les requêtes http.