期望表达式不会使用 Chai 抛出任何错误

Expect expression not to throw any error using Chai

我有一个功能

export function getFileContent(path: string): any {
    const content = readFileSync(path);
    return JSON.parse(content.toString());
}

如果我想检查表达式 getFileContent(meteFile) 是否抛出一些明确的错误,我应该写类似

的东西
expect(getFileContent(meteFile)).to.throw(new SyntaxError('Unexpected token } in JSON at position 82'));

但是有没有办法检查表达式是否没有引发任何错误?

我试过了

expect(getFileContent(metaFile)).not.to.throw(); 

但是报错

AssertionError: expected { Object (...) } to be a function

那么如何检查函数调用是否没有抛出任何错误?

您可以使用以下方法检查函数调用是否未抛出错误 assert.doesNotThrow 方法

这是文档中的示例

assert.doesNotThrow(fn, 'Any Error thrown must not have this message');
assert.doesNotThrow(fn, /Any Error thrown must not match this/);
assert.doesNotThrow(fn, Error);
assert.doesNotThrow(fn, errorInstance);

为了进一步了解结帐它的文档:assert.doesNotThrow

您似乎在使用 expect,因此您可以使用 expect(fn).to.not.throw 以确保它不会引发错误。

expect(myFn).to.not.throw(); // makes sure no errors are thrown
expect(myFn).to.not.throw(SomeCustomError, "the message I expect in that error"); // not recommended by their docs

你应该看看 the docs for this