如何在简单的Mocha单元测试中处理UnhandledPromiseRejectionWarning

时间:2018-04-04 21:38:49

标签: node.js promise async-await mocha

简单的mocha,nodejs单元测试问题。我有一个简单的utilties类从fs-extra读取本地fs的文件。该类称为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没有意识到错误,只是警告我,未处理的承诺拒绝将在未来退出节点进程。

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

服务实现必须抛出一个不存在的路径的错误(或任何其他错误),但究竟是通过这些错误,摩卡,而无需编写已经做unneccesary代码摩卡框架线的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

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