Транспортир, вспомогательная функция не получает значение обновления

89
9

Я e2e проверяю функцию редактирования в своем приложении. Пользователь нажимает на строку, затем нажимает кнопку редактирования. Оттуда они доставляются в меню, где они могут редактировать свои кредитные документы. Эта функция здесь:

export async function findRow(rows, matcher) {

const relevantRow = await rows.filter(row => {

return row.getText().then(text => {

return text.includes(matcher);

});

}).first();

return relevantRow;

Извлекает строку на основе любого значения, которое я передаю. В моем классе spec я тестирую его так:

  it('should edit the user', async function()  {

page.editUser();

const row = await findRow(page.rows, 'testEmail@testEmail')

expect(await row.getText()).toContain('editedName')

Теперь мой тест не позволяет сказать что-то вроде ожидаемого "OriginalName", чтобы содержать editName. На экране, когда я просматриваю мой тест через Chrome, я вижу изменение стоимости. У меня браузер слишком подошел, чтобы функция могла захватывать значения. Это заставляет меня думать, что моя функция захватывает строку перед функцией редактирования. Я не уверен, что это так, поэтому любой вход был бы замечательным. Спасибо!

спросил(а) 2021-01-25T17:55:21+03:00 4 месяца, 4 недели назад
1
Решение
76

Вы захватываете строку перед вашей редакцией, потому что ваша editUser() работает асинхронно, потому что большинство функций Protractor асинхронны, как вы знаете ;-).

Из-за этого вам нужно вызвать функцию с await:

await page.editUser();

И отметьте функцию editUser с помощью async.

Таким образом, дальнейшее выполнение ждет, пока ваша функция не завершится.

ответил(а) 2021-01-25T17:55:21+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема