在通过Sinon/Chai/Mocha清除readFile/Sync的所有相关问题后,测试失败。
有一个基本的getFile函数可以检索文件:
function getFile(path) {
const file = fs.readFileSync(path, "utf8)
return file;
}
module.exports = {getFile}
我想创建一个测试,如果fs. readFileSync也抛出错误,getFile应该抛出错误:
it('如果fs.readFileSync抛出错误,则应抛出错误',()=〉{
我试过:
it('should throw an error if fs.readFileSync throws an error', () => {
const error = new Error('some error message')
const myStub = sinon.stub(fs, "readFileSync")
myStub.throws(error)
const filePath = "/Project/test.js"
const gFile = index.getFile(filePath)
try {
if(myStub.error === true) {
gFile(error)
} catch (error) {
expect(myStub).to.throw(error)
我得到的是:
1个失败错误:Context.at Process.processImmediate中一些错误消息
2条答案
按热度按时间hmae6n7t1#
请参见
throw()
上的chai expect docs。有以下示例:您可以看到
expect(badFn)
得到的是badFn
,而不是badFn()
,因此在测试中没有任何地方是badFn
实际上被 * 调用 * 的。这意味着
expect
调用badFn
,实际上,expect
需要调用它,因为它需要捕获错误。因此,在代码中,尝试以下操作:
c90pui9n2#
尝试将error函数放入Sinon throw方法中,如下所示。