Транспортир страницы объектов счетчик возвращается неправильно - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь написать несколько тестов e2e для приложения Ionic с использованием Protractor и Cucumber.Я следовал шаблону объекта страницы, но по какой-то причине, несмотря на то, что я ждал появления элементов, вызов count() возвращает 0.Однако если я засну, это сработает.Вот мой шаг:

Then('my cases should be listed', function (callback) {
  casesPage.isLoaded()
  .then(() => {
    expect(casesPage.numberOfFamilies())
      .to.eventually.equal(20)
      .and.notify(callback);
  })
});

И объект моей страницы

import { browser, $, $$, by, ElementFinder, ElementArrayFinder } from 'protractor';

export class CasesPage {

  listOfFamilies: ElementArrayFinder;

  private initializePromise: Promise<void>;

  async initialize(): Promise<void> {
    if(!this.initializePromise) {
      return this.initializePromise = new Promise<void>(async (resolve) => {
        this.listOfFamilies = $$('ul.families li.family');
        return resolve();
      });
    }
  }

  get() {
    return browser.get('/cases')
  }

  async isLoaded(): Promise<boolean> {
    await this.initialize();
    return this.listOfFamilies.isPresent();
  }

  async numberOfFamilies(): Promise<number> {
    await this.initialize();
    // browser.sleep(3000); Uncommenting this works
    return this.listOfFamilies.count();
  }

}

Есть идеи?

1 Ответ

0 голосов
/ 22 октября 2018

Проблема, которую this.listOfFamilies.count() возвращает Обещание, которое вы должны решить.Просто добавьте await перед этим:

  async numberOfFamilies(): Promise<number> {
    await this.initialize();
    return await this.listOfFamilies.count();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...