2015-12-28 3 views

ответ

4

Конечно, идея заключается в том, чтобы использовать browser.executeAsyncScript() для:

  • местонахождение элемента с ng-app определяется
  • инициализировать angular.element и получить injector экземпляр
  • получить использование $state.current.name$state service
  • в получить текущее состояние
  • Дрессировка

образца с помощью UI router demo page:

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"); 
    }); 
}); 

сильно вдохновлен this answer.

Смежные вопросы