var не определен в угловом тестировании - PullRequest
0 голосов
/ 13 июня 2018

Я тестирую угловое приложение в протраторе и не понимаю, почему это происходит.

У меня есть этот тест:

beforeEach(function() {
  
        browser.get('http://localhost:8080/#/');

...

        //name
        let name = element(by.css("*[id='field_nombre']"));
    
       }
       
        it('Scenario 1', function () {
        name.click();
        ....
Там написано, что имя не определено.

Я делаю это:

 beforeEach(function() {
      
            browser.get('http://localhost:8080/#/');

    ...

        
           }
           
            it('Scenario 1', function () {
             //name
            let name = element(by.css("*[id='field_nombre']"));
            name.click();
            ....

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

Ответы [ 4 ]

0 голосов
/ 13 июня 2018
let name = element(by.css("*[id='field_nombre']")); 

имя определено внутри beforeEach().Таким образом, область имени будет доступна только внутри beforeEach().Он не может быть доступен извне метода

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

beforeEach имеет свою собственную изолированную область функций, а it имеет свою собственную функциональную область.мы не можем получить доступ к переменным, которые инициализированы в beforeeach из другой функции.

инициализировать переменную вне функции beforeeach.

let name;
beforeEach(function() {

        browser.get('http://localhost:8080/#/'); 

        //name
        ame = element(by.css("*[id='field_nombre']"));
}   
0 голосов
/ 13 июня 2018

Поскольку ваша let name = находится в области действия, отличной от используемой.

В ключевом слове JS let область действия сокращается от всей функции к общему блоку:

for (let i = 0; i < 2; i++) {
    // i is visible
}

// i is no longer visible as it's scope is only inside `for`
0 голосов
/ 13 июня 2018
let name;
beforeEach(function() {
  browser.get('http://localhost:8080/#/');
  name = element(by.css("*[id='field_nombre']"));
}      
it('Scenario 1', function () {
  name.click();
}
...