2017-01-28 15 views
1

я упростил код, мне нужно, чтобы проверить это:Могу ли я получить доступ к значению ng-app в тесте транспортира?

<html ng-app="home" ng-strict-di=""><head>.... 

И я бегу некоторые тесты транспортир, я хочу, чтобы получить доступ к значению нг-приложения, так что я могу сравнить и посмотреть, что приложение работает в каждом стр.

Я попытался

var appName = element(by.xpath('/html/@ng-app')) 

но не возвращает доступное обещание или текст я могу сравнить с

appName.getText().then(function(name) { 
     expect(name).toBe('home') 
     }); 

Но транспортира жалуется:

InvalidSelectorError: invalid selector: The result of the xpath expression "/html/@ng-app" is: [object Attr]. It should be an element. 

Так я немного озадачен, как я могу получить доступ к моему имени углового приложения от транспортира, чтобы протестировать приложение, работающее независимо от localizat ионных меток.

Любое понимание этой загадки?

ответ

2

И, похоже, волшебно, когда вы приказываете своим мыслям формулировать вопрос, ответ приходит к вам.

хитрость заключается в том, чтобы получить HTML как элемент

var appNameHtml = element(by.xpath('/html')) 

, а затем, в тесте, получить атрибут нг-приложения и использовать его:

appNameHtml.getAttribute('ng-app').then(function(value) { 
    expect(value).toBe('home'); 
}); 

и бинго, вы можете извлечь имя приложения.

Может быть, это очень простой вопрос, но это сводит меня с ума :)

2

ваш ответ будет достаточно, я думаю, в этом случае. Но просто хотелось выделить более общий подход в случае, если ng-app может проживать не только на элементе html.

var elementWithNgApp = element(by.css('*[ng-app]'))

А потом хотел бы добавить еще одну вещь. Вам не нужно разрешать обещание getAttribute, чтобы ожидать от его значения. Jasmine решает обещание для вас. Вы можете иметь что-то вроде этого

expect(elementWithNgApp.getAttribute('ng-app')).toBe('home');

+0

Спасибо, ваш ответ дал лучшее понимание того, как обращаться с обещаниями. :) – shadowcharly

+0

Рад, что это помогло! – AdityaReddy