gpt4 book ai didi

javascript - 如何测试 toThrow 异常?

转载 作者:行者123 更新时间:2023-12-04 08:47:06 25 4
gpt4 key购买 nike

在我的模板组件中,我使用了 @Watch执行验证如下

  @Watch('name')
validateName(newValue: string) {
const isBlank = typeof newValue !== 'string' || newValue === '';
console.log('AYE!', isBlank);
if (isBlank) { throw new Error('name: required') };
}
现在我想开玩笑地测试一下
it('throws error when name is not supplied', async () => {
const { root } = await newSpecPage({ components: [MyComponent], html: '<my-component></my-component>' });

expect(() => {
root.name = '';
}).toThrow(new Error('name: required'))
})
我得到的结果如下
expect(received).toThrow(expected)

Expected message: "name: required"

Received function did not throw

47 | expect(() => {
48 | root.name = '';
> 49 | }).toThrow(new Error('name: required'))
| ^
50 | })
51 | });
52 |

console.log
AYE! true

at MyComponent.validateName (src/xxx/my-component.tsx:31:13)
at Array.map (<anonymous>)
我想知道我应该如何捕捉从 validateName 抛出的错误?

最佳答案

更改 Prop 后,您必须使用异步 waitForChanges() .您可以通过调用它然后使用 rejects.toEqual(...) 来检查它是否抛出。 .您还必须返回 expect(...)语句,否则您的测试将在异步代码完成之前通过(并且您会在控制台中得到 UnhandledPromiseRejectionWarning)。

it('throws error when name is not supplied', async () => {
const { root, waitForChanges } = await newSpecPage({
components: [MyComponent],
html: '<my-component></my-component>'
});

root.name = '';

return expect(waitForChanges()).rejects.toEqual(new Error('name: required'));
})

关于javascript - 如何测试 toThrow 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64260067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com