gpt4 book ai didi

node.js - 如何使用超时执行 fs.existsSync(path)

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:23 24 4
gpt4 key购买 nike

我正在使用 TestCafe 和 Node.JS 编写自动化测试脚本。其中一项测试是下载文件并验证下载是否完成。我不想写硬编码

await t.wait(4000);

因为我的测试是基于数据驱动的框架,所以我可以为它提供大量数据以及大量不同的文件和文件类型。因此,文件大小可能会相差极大,从几千字节到千兆字节不等。

这样写

await t.wait(4000);

可能对一个测试用例有效,但对其他测试用例几乎肯定会失败。

我正在使用依赖项“下载文件夹”来发现本地系统上下载文件夹的路径。从那里我寻找我希望存在的特定文件。它适用于下载速度快的小文本文件和小 zip 文件。但是一旦我尝试下载一个包含大量数据的非常大的 zip 文件,它就会失败

if (fs.existsSync(zipFileNameAndPath)) {
await t.expect(true).eql(true); // Report it as a success.
} else {
console.log('file does NOT exist: ' + zipFileNameAndPath);
await t.expect(false).eql(true); // Report it as a failure!
}

所以我的问题是:

有没有办法做类似的事情

if (fs.existsSync(zipFileNameAndPath){[ timeout: 50000000]}) {...} else {...}

其中产生的超时将作为动态超时,等待查看文件何时找到,如果在超时到期之前找到则返回true,只有在超时时间过后才返回false ?

我正在寻找一个同步答案,它不依赖于 Lodash 或 JQuery 之类的东西,并且在 ES6 中运行良好。

最佳答案

const filepath = 'YOUR_FILE.pdf';
const verifyDownload = async () => new Promise((resolve, reject) => {
fs.watchFile(filepath, (curr, prev) => {
if (fs.existsSync(filepath)) {
fs.unwatchFile(filepath);
resolve(true);
}
});
});

await t.expect(await verifyDownload()).ok("Could not download", { timeout: 30000 });

关于node.js - 如何使用超时执行 fs.existsSync(path),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48910111/

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