【问题标题】:fs.readFile Unit test case - "Cannot log after tests are done. Did you forget to wait for something async in your test?"fs.readFile 单元测试用例 - “测试完成后无法记录。您是否忘记在测试中等待异步内容?”
【发布时间】:2020-04-29 21:00:37
【问题描述】:

我目前正在使用 jest 为使用 fs.readFile 的方法编写单元测试用例。我一直在尝试测试 fs.readFile 内部的逻辑但没有成功。所以我尝试像下面这样在函数内部登录

我要测试的功能

fileUpload = (request: Request, response: Response) => {
    // Reading the file
    fs.readFile(request.file.path, async (error, file) => {
        console.log('Hey i am inside')
        const entity = await this.model.fileUpload(x, y, z);
    });
};

到目前为止我的测试用例

    it('should perform file upload', async () => {
       ....
       await Promise.resolve(controller.fileUpload(request as Request, response as Response))
       ....
    });

引发错误


测试完成后无法登录。你是否忘记等待某事 在你的测试中异步? 尝试记录“嘿,我在里面”。


为什么会显示此错误,即使我在测试文件中返回已解决的承诺。我推断测试在控制进入 fs.readFile 之前已完成。我应该怎么做才能等待 fs.readFile 完成?

【问题讨论】:

    标签: javascript typescript unit-testing jestjs fs


    【解决方案1】:

    fs.readFile 不返回 Promise,并且(来自 sn-p)您的 fileUpload 代码也不会针对运行 await。您需要让 fileUpload 返回一个 Promise,它会在整个函数完成后解析。

    【讨论】:

    • 我试图不编辑现有代码只是为了测试。还有其他方法可以测试吗?
    猜你喜欢
    • 2023-03-25
    • 2022-12-22
    • 2019-05-31
    • 2018-12-19
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多