Cypress и установка переменных - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь установить переменную в каждом l oop в кипарисе, и использовать переменную позже. переменная увеличивается в l oop, но становится нулевой вне ее, когда я ее использую. Можете ли вы объяснить мне, почему и как я могу это исправить? Спасибо

public getNoEntries(fullName: string) : number
  {
    let noEntries: number = 0;
    cy.get(this.employeeList).find('li').each((x) =>
      {  
        var entryName = x.text().trim();
        if (entryName.localeCompare(fullName)==0)
        { 
          ++noEntries;
          cy.log("in loop: "+noEntries.toString());                       
        }             
      });

    cy.log('out of loop:'+noEntries);

    return noEntries;
  }

Вывод:

в л oop: 1 в л oop: 2 в л oop: 3 из л oop: 0

Я хочу, чтобы он вернулся 3. Как я могу это сделать?

Большое спасибо.

1 Ответ

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

Как хорошо объяснено в документации Cypress ,

Вы не можете назначать или работать с возвращаемыми значениями любой команды Cypress. Команды ставятся в очередь и выполняются асинхронно.

Таким образом, вместо использования возвращаемого значения функции, вы можете, однако, связать свой код функций getNoEntries () внутри самой команды cypress вызывающих функций.

Также 'outofl oop' равно 0, поскольку область действия нового значения заканчивалась в самом cy.get (). Чтобы получить новое значение переменной, вы можете связать второй log () в then () первой команды, как показано ниже.

let noEntries: number = 0;
cy.get(this.employeeList).find('li').each((x) =>
  {  
    var entryName = x.text().trim();
    if (entryName.localeCompare(fullName)==0)
    { 
      ++noEntries;
      cy.log("in loop: "+noEntries.toString());                       
    }             
  })
  .then(()=>{
    cy.log('out of loop:'+noEntries);
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...