Как обнаружить, что я в тестовом режиме angularjs - PullRequest
0 голосов
/ 29 июня 2018

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

if(mode==test) {
    do something
}

Как мне получить доступ к переменной из protractor.conf.js в моем приложении angularjs?

Редактировать: для большей ясности, мне нужно изменить одно значение моей константы, поэтому код выглядит так:

angular.module('app').constant('testConstant', { name: 'Johny'}) 

И я использую изменение в моей тестовой среде с именем «Питер» вместо «Джонни». Как я могу сделать это таким образом?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

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

Метод, называемый browser.addMockModule, позволяет передавать данные из узла (в котором работает транспортир) в браузер.

browser.addMockModule('modName', function(nameFromTest) {
  angular.module('modName', []).constant('testConstant', { name: nameFromTest});
  angular.module('yourProdAngularModule').requires.push('modName');
},'Johny');

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

0 голосов
/ 29 июня 2018

Обычно плохая практика добавлять подобные проверки в вашу реальную базу кода.

Хорошая новость заключается в том, что все, что вы пытаетесь сделать, это обновить некоторые данные в вашем приложении angularjs во время тестирования, что вполне выполнимо.

Для этого вы можете использовать метод browser.executeScript транспортира (https://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.executeScript)

Я использовал это в прошлом для доступа к сервису AngularJS и вызывал функцию, которая обновляет некоторые проверенные данные ... Например ...

browser.executeScript('window.angular.element(document.body).injector().get(\'oneOfMyService\').updateMockData(' + JSON.stringify({ data: 5, something: true }) + ');');

С этого момента все зависит от того, какие данные вы пытаетесь изменить, и как ваша страница их использует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...