我有这样的功能可以测试:
export const checkTextEmpty = stringArg => {
if (typeof stringArg !== 'string') {
throw new Error('Provide a string argument to checkTextEmpty function')
}
return stringArg.length === 0 || stringArg.trim() === ''
}
,我想测试它是否正确抛出错误:
it(
'should throw an error if passed argument is not a string',
() => {
const notStrings = [null, 4, [], {}, undefined, -5]
notStrings.forEach(elem => {
expect(checkTextEmpty(elem)).toThrow(Error)
})
}
)
这是我终端中的结果:
utils.js › checkTextEmpty util › should throw an error if passed argument is not a string
Provide a string argument to checkTextEmpty function
117 | export const checkTextEmpty = stringArg => {
118 | if (typeof stringArg !== 'string') {
> 119 | throw new Error('Provide a string argument to checkTextEmpty function')
| ^
120 | }
121 |
122 | return stringArg.length === 0 || stringArg.trim() === ''
at checkTextEmpty (src/scripts/utils/utils.js:119:11)
at forEach (src/scripts/utils/utils.test.js:11:18)
at Array.forEach (<anonymous>)
at Object.it (src/scripts/utils/utils.test.js:10:20)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 2 passed, 3 total
Snapshots: 0 total
Time: 3.918 s
如何修复测试以使其正常运行?
答案 0 :(得分:1)
toThrow
希望将 函数 传递给expect
,而不是调用的结果。
因此,您必须使用匿名函数包装函数调用:
expect(() => {
checkTextEmpty(elem)
}).toThrow(Error);