serenity-js/огурец/чай Promise AssertionError нужна помощь

Я теряюсь, я чувствую, что делаю это правильно, НО не могу понять, почему этот простой тест терпит неудачу

У меня есть файл feature вот так

  Scenario: List all accounts in the tenant
    Given that Keith has navigated to the tenant account list
    When he views the accounts in the table that include name, name, name
    Then he should also see 1,2,3 in the list

У меня есть файл definition вот так

  this.When(/^(.*?) views the accounts in the table that include (.*)$/, (name: string, accountInformation: string) => {
    return stage.theActorCalled(name).attemptsTo(
      ViewAllAccountNames.inTheTableOf(listOf(accountInformation)),
    );
  });

У меня есть файл pageObject вот так

export class AccountTable {
    // static displayingAll = Text.ofAll(AccountListUI.accountListView);
  // static isDisplayingAllNames = Text.ofAll(Target.the('account names in the table').located(by.css('table tbody tr td:nth-child(2)')));

  static AccountNames = Target.the('account names in the table').located(by.css('table tbody tr td:nth-child(2)'));
  static AccountNumbers = Target.the('account numbers in the table').located(by.css('table tbody tr td:nth-child(1)'));
  static isDisplayingAllNames = Text.ofAll(AccountTable.AccountNames);
  static isDisplayingAllNumbers = Text.ofAll(AccountTable.AccountNumbers);
}

вот мой класс, который делает работу

constructor(private accName: string[]) {

  }

  static inTheTableOf(accName: string) {
    return new ViewAllAccountNames(accName);
  }

  performAs(actor: PerformsTasks): PromiseLike<void> {
    return actor.attemptsTo(
      See.if(AccountTable.isDisplayingAllNames, items => expect(items).to.eventually.contain(this.accName))
    );
  }
}

когда я отлаживаю через веб-шторм внутри класса ViewAllAccountNames, я получаю

  static inTheTableOf(accName: string) { accName: Array(3)
    return new ViewAllAccountNames(accName); accName: Array(3)
  }

затем, когда я добираюсь до своей функции See.if, я получаю

performAs(actor: PerformsTasks): PromiseLike<void> {
    return actor.attemptsTo(
      See.if(AccountTable.isDisplayingAllNames, items => expect(items).to.eventually.contain(this.accName)) AccountTable.isDisplayingAllNames: undefined
    );
  }

поэтому моя дилемма такова: и я думаю, что это связано с тем, что моя функция See.if настроена неправильно?

See.if(AccountTable.isDisplayingAllNames, items => expect(items).to.eventually.contain(this.accName))


Cucumber test run has failed.

1) Scenario: List all accounts in the tenant - e2e\features\get_account_list\get_all_accounts.feature:10
   Step: When he views the accounts in the table that include name, name, name - e2e\features\get_account_list\get_all_accounts.feature:12
   Step Definition: node_modules\serenity-js\src\serenity-cucumber\webdriver_synchroniser.ts:47
   Message:
     AssertionError: expected [ Array(5) ] to include [ 'name', 'name', 'name' ]
     From: Task: <anonymous>

person kapperkp    schedule 11.04.2018    source источник


Ответы (1)


я идиот, я использовал не ту функцию, пришлось использовать функцию

.to.eventually.contain.members

аналогичный ответ и описание можно найти здесь: Ответ

person kapperkp    schedule 13.04.2018