node.js - 如何在简单的 Mocha 单元测试中处理 UnhandledPromiseRejectionWarning

标签 node.js promise async-await mocha.js

简单的mocha、nodejs单元测试问题。我有一个简单的实用程序类,使用 fs-extra 从本地文件系统读取文件。该类称为 FileUtils,采用路径并尝试默认使用 utf-8 返回上下文。简单:

async readFileContent(fqFileName, encoding='utf-8'){
        return fse.readFile(fqFileName,encoding)
            .then(content => content)
            .catch(any=>{
                throw any
            })
    }

我的单元测试只需要类 FileUtils 并通过调用调用该方法

it.only('accepts an html template to compile', () => {
    let fixture = path.resolve(__dirname, '../_fixtures/100_tplWithDynamicBlocks.html')
    fileUtils.readFileContent(fixture)
        .then(content => {
            console.log(content) /* forget */
            content.should.not.be.null
        })
})

工作正常,一切正常。但是,当我将路径更改为无效/不存在的路径时,mocha 并没有意识到该错误,只是警告我,未处理的 promise 拒绝将在将来退出 Node 进程。

所以我的问题是,我如何告诉mocha这个测试应该被标记为失败而不实现任何类型的catch签名,或者更好的是我应该如何实现mocha识别丢失文件(或其他)访问的服务方法。

服务实现必须抛出不存在路径的错误(或任何其他错误),但是将这些错误传递给mocha而不编写mocha框架已经在做的不必要代码行的最佳方法是什么?

最佳答案

可以在then之后使用catch方法处理错误。在方法内部您可以编写断言。

关于node.js - 如何在简单的 Mocha 单元测试中处理 UnhandledPromiseRejectionWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660863/

相关文章:

javascript - 难以将快速 session 变量实现为数组

javascript - .then()方法返回的promise中 promise 了什么?

javascript - Express.js - foreach 数据数组并将它们存储在数据库中

Javascript/API 空白已解决的 Promise 和请求中的非全局数据

javascript - 使用深层嵌套的异步函数进行错误处理

javascript - 在 Node/MongoDb 中创建架构

javascript - 循环解决 100 条消息获取限制在 1 天后不再起作用

javascript - <Buffer 72 65 74 72 69 65 76 65 72> 请解释一下这在js中是什么意思

javascript - 了解 NodeJS 中的异步和 Promise

c# - 编写自己的异步方法