Accès aux éléments / variables de l'extension JS avec Protractor

J'ai un test Protractor qui entre dans les données de connexion et clique sur le bouton de connexion et je souhaite vérifier la valeur d'une variable angulaire.

Le ng-click pour l'élément cliqué est doLogin () qui est défini dans le fichier du contrôleur comme suit:

$scope.doLogin = function(){ console.log('login -- todo'); // remember email used localStorageService.add('lastKeyEmail', $scope.data.login.key.email); // todo - make dynamic $scope.authentication.user = true; // set email of logged in user // todo: would need to be done in user service (set user details received from server) Authentication.setEmail($scope.data.login.key.email); // overwrite password in memory $scope.data.login.password = "thispasswordisdeletedsoyoucantreadit"; }; 

Comment puis-je utiliser Protractor's attend () sur la valeur de $ scope.authentication.user?

Il existe une fonction appelée evaluate qui vous permet d'évaluer une expression angulaire donnée par un élément.

Sélectionnez un élément DOM pour lequel vous souhaitez examiner la portée, puis appeler l'évaluation. Il existe un exemple dans la documentation:

http://angular.github.io/protractor/#/api?view=ElementArrayFinder.prototype.evaluate

Avec le transporteur, vous exécutez des tests de bout en bout (comme si vous étiez un utilisateur en cliquant sur l'interface – boutons, ancres – et en lisant ce qui est rendu – ce que vous décidez d' exposer définitivement à la vue), vous n'avez pas accès Aux variables JavaScript encapsulées dans vos contrôleurs.

Le type de test dont vous parlez est un test d'unité, où vous ne testez que votre fonction doLogin , en injectant un objet de portée $ doLogin avec les données appropriées et vous affirmez qu'il fait exactement ce que vous attendiez en testant les variables js.

Bien que si $scope.authentication.user modifie la vue si elle est définie sur true (comme si vous affichez "Authentication successfull", ou même l'itinéraire vers une autre vue), vous pouvez affirmer avec le transporteur que ce comportement a traversé (en vérifiant le " Message d'authentification réussie dans le DOM après avoir déclenché la connexion) – mais gardez à l'esprit qu'il s'agit encore d'un test e2e.