量角器,辅助函数未收到更新值

时间:2018-06-22 19:50:44

标签: angular protractor automated-tests

我正在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'的内容,其中包含editedName。在屏幕上观看通过Chrome自动进行的测试时,我看到了价值的变化。我也让浏览器稍等,以便该功能可以获取值。这使我相信我的函数正在抓住编辑函数之前的行。我不确定是否是这种情况,因此任何输入都会很棒。谢谢!

1 个答案:

答案 0 :(得分:2)

您要在编辑之前抓一行,因为您的editUser()函数是异步运行的,因为大多数量角器函数都是异步的;-)。

因此,您需要使用await来调用函数:

await page.editUser();

并用editUser标记您的async功能。

所以进一步的执行要等到您的函数完成为止。