jquery - Comment devrais-je tester un changement $ scope.watch(AngularJS) dans Jasmine?



angularjs-directive jasmine-jquery (1)

Dans vos tests unitaires, vous devez appeler manuellement $scope.$digest() ou $scope.$apply() pour déclencher $scope.$watch() .

Normalement dans votre code, vous n'auriez pas à faire cela, puisque des directives comme ng-click font $rootScope.$apply pour vous dans les coulisses.

J'ai récemment commencé à écrire quelque chose avec AngularJS et je ne suis pas sûr de savoir comment écrire un test pour cette chose en particulier. Je construis un mode "Help Request" qui a différents états. Donc, dans mon contrôleur, j'utilise une variable $ scope.request_mode. Les différents liens pour activer les demandes d'aide définissent cette variable différemment.

Puis, dans ma directive, je fais un $scope.$watch('request_mode', function(){...}); pour activer ou désactiver sélectivement des choses lorsque le mode de requête change. Le code fonctionne très bien, mais le problème que je rencontre concerne les tests. Je n'arrive pas à convaincre Jasmine de ramasser le $scope.$watch et de faire feu quand ça change.

Je suis sûr que quelqu'un a déjà été confronté à cela, donc toute suggestion serait très appréciée.





jasmine-jquery