我正在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自动进行的测试时,我看到了价值的变化。我也让浏览器稍等,以便该功能可以获取值。这使我相信我的函数正在抓住编辑函数之前的行。我不确定是否是这种情况,因此任何输入都会很棒。谢谢!
答案 0 :(得分:2)
您要在编辑之前抓一行,因为您的editUser()
函数是异步运行的,因为大多数量角器函数都是异步的;-)。
因此,您需要使用await
来调用函数:
await page.editUser();
并用editUser
标记您的async
功能。
所以进一步的执行要等到您的函数完成为止。