在期望断言中使用await异步时,TestCafe卡住

时间:2019-08-16 15:38:52

标签: javascript testing e2e-testing assertion testcafe

我正在使用TestCafe,并且在测试中有以下代码无法正常工作:

test('Verify contents of allocation', async (t) => {
  await t
    .click(accountManager.selectAccount(inputData.testAccount))
    .click(homePage.icon)
    .expect(7)
    .eql(await dash.getPersonCount(inputData.totalAllocation));
});

上述代码的问题在于,即使在测试的第一行到达测试行之前,TestCafe也会说“正在等待该元素出现”,然后永远卡住。我不知道为什么会这样。

当我对上述测试进行以下更改时,它会起作用:

test('Verify contents of allocation', async (t) => {
  await t
    .click(accountManager.selectAccount(inputData.testAccount))
    .click(homePage.icon);
  const test = await dash.getPersonCount(inputData.totalAllocation);
  await t
    .expect(7)
    .eql(test);
});

有没有一种简单的方法可以防止TestCafe卡住?

知道为什么它会卡在第一位吗?

1 个答案:

答案 0 :(得分:1)

最佳做法是将枚举值放在实际字段中。当您将Selector's DOM node state propertyclient function Promise用作断言中的实际值时,TestCafe会激活智能断言查询机制。这种机制使您的测试稳定-在TestCafe documentation中详细了解它。 因此,请按以下方式重写测试:

test('Verify contents of allocation', async (t) => {
  await t
    .click(accountManager.selectAccount(inputData.testAccount))
    .click(homePage.icon)
    .expect(dash.getPersonCount(inputData.totalAllocation)).eql(7);
});

在您的第一个示例中,在await方法中使用expect关键字的问题与测试之前执行dash.getPersonCount(inputData.totalAllocation)有关,因为该await破坏了测试链。