如何解决如何正确测试诺言
我使用Jest和React-testing-library在React应用中进行了测试:
it('promise test',() => {
const promise = new Promise<string>(resolve => setTimeout(() => resolve('foo'),1000))
expect.assertions(1);
expect(promise).resolves.toBe('foo');
});
如果我进行测试,我会收到消息:
Error: expect.assertions(1)
Expected :1
Actual :0
我的问题是。为什么不调用expect(promise).resolves.toBe('foo')
中的代码?如何测试这个异步承诺?
解决方法
正确的解决方案是:您必须使匿名函数异步并等待响应。
it('promise test',async () => {
const promise = new Promise<string>(resolve => setTimeout(() => resolve('foo'),1000))
expect.assertions(1);
await expect(promise).resolves.toBe('foo')
});
或这种方式
it('promise test',1000))
expect.assertions(1);
await promise;
promise.then(value => {
expect(value).toBe('foo');
})
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。