gpt4 book ai didi

testing - Async/await t 测试代码在 TestCafe 的 beforeEach 中不起作用

转载 作者:行者123 更新时间:2023-11-28 20:19:31 24 4
gpt4 key购买 nike

当我尝试在 TestCafe 中使用 beforeEach 时,其中包含一些测试代码的函数似乎无法正常工作。我在所有不同的固定装置和测试中使用 doLogin

不工作

const doLogin = async (t) => {
const login = new Login();

await t
.maximizeWindow()
.typeText(login.emailInput, accounts.EMAIL_SUCCESS, { replace: true, paste: true })
.expect(login.emailInput.value).eql(accounts.EMAIL_SUCCESS, 'check an email')
.typeText(login.passwordInput, accounts.PASSWORD, { paste: true })
.click(login.loginButton);
};

fixture`App > ${menuName}`
.page`${HOST}`
.beforeEach(async (t) => {
// This function is called
// but tests inside the function were not run
doLogin(t)
});

带夹具的工作箱

fixture`App > ${menuName}`
.page`${HOST}`
.beforeEach(async (t) => {
const login = new Login();

// But this case is working.
await t
.maximizeWindow()
.typeText(login.emailInput, accounts.EMAIL_SUCCESS, { replace: true, paste: true })
.expect(login.emailInput.value).eql(accounts.EMAIL_SUCCESS, 'check an email')
.typeText(login.passwordInput, accounts.PASSWORD, { paste: true })
.click(login.loginButton);
});

从测试调用的工作案例

test(`show all ${menuName} menu's components`, async (t) => {
// When I added a function directly into a test function then it worked.
doLogin(t);
// some codes

谁能告诉我这段代码中的问题?

official document ,它说 在测试 Hook 运行的那一刻,测试的网页已经加载,因此您可以在测试 Hook 内使用测试操作和其他测试运行 API。

提前致谢。

最佳答案

您似乎在 doLogin() 调用之前错过了 await 关键字:

fixture`App > ${menuName}`
.page`${HOST}`
.beforeEach(async (t) => {
// Don't forget about await
await doLogin(t)
});

由于实现细节,在某些情况下可以在不使用 await 的情况下调用 async 函数,但最好不要依赖它并始终使用 await async 函数。

如果您添加了 async 关键字并且它没有修复测试,请随意创建 a bug report在 TestCafe 存储库中,并提供可以运行以重现问题的完整示例。

关于testing - Async/await t 测试代码在 TestCafe 的 beforeEach 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com