Глобальные переменные недоступны в spe c файлах транспортира - PullRequest
0 голосов
/ 07 января 2020

При автоматизации приложения angular 4 мне нужно объявить некоторые глобальные переменные, например myVar = 'John'. Я попытался объявить его в protractor.conf, но он не работает. Я уже видел Набор транспортиров глобальных переменных , но эти решения не работают для меня. Есть ли какое-то решение этого? Я использую транспортир версии 5.4.2.

exports.config = {
//..
params:{
myVar = 'John'
},

//..
}
Я уже использовал это, но он не работает

onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    //this global variable 
    global.myVar = 10000;
    
    browser.waitForAngularEnabled(false);
    browser.driver.manage().window().maximize();
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 07 января 2020

params является объектом и поэтому требует : для присвоения значения myVar, а не =.

exports.config = {
  params:{
    myVar:'John'
  },    
}

Это вызывается следующим образом

console.log(browser.params.myVar)

Второй метод должен работать как есть. Вам просто нужно позвонить

onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    //this global variable 
    global.myVar = 10000;

    browser.waitForAngularEnabled(false);
    browser.driver.manage().window().maximize();
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }

Вызывается с

console.log(myVar);
0 голосов
/ 08 января 2020

Также обратите внимание, что при использовании «global.blabla» или «browser.params» с включенной параллелизацией тестов (shardTestFiles: true) они будут доступны только для чтения. Это означает, что если вы измените эти переменные в одном потоке - другие потоки будут по-прежнему иметь старое значение, поскольку в транспортире каждый тестовый поток выполняется в отдельном процессе nodejs и у них нет общей памяти.

0 голосов
/ 07 января 2020

вам не хватает учебника:

params: {
   myVar: 500;
}

let a = browser.params.myVar;
console.log(a); // 500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...