Vérifier l'état de la route ui angulaire en utilisant un rapporteur

J'utilise le framework Protractor pour tester mon application angulaire.

Puis-je vérifier l'état angulaire dans le test e2e?

Bien sûr, l'idée est d'utiliser browser.executeAsyncScript() vers:

  • Localiser l'élément ayant défini l' ng-app
  • Initialiser l' angular.element et obtenir l'instance de l' injector
  • Obtenir le service de l' $state
  • Utilisez $state.current.name pour obtenir le nom de l'état actuel

Exemple de test de travail à l'aide de la page de démonstration du routeur UI :

 describe("Current Angular UI router state", function () { beforeEach(function () { browser.get("https://angular-ui.github.io/ui-router/sample/#/"); }); it("should get the current state", function (){ var currentStateName = browser.executeAsyncScript(function(callback) { var el = document.querySelector("html"); // ng-app is defined on html element in this case var injector = angular.element(el).injector(); var service = injector.get('$state'); callback(service.current.name); }); expect(currentStateName).toEqual("home"); }); }); 

Fortement inspiré de cette réponse .