我正在使用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卡住?
知道为什么它会卡在第一位吗?
答案 0 :(得分:1)
最佳做法是将枚举值放在实际字段中。当您将Selector's DOM node state property或client 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
破坏了测试链。