在嘲笑函数中返回Promise< string [] |从不
我正在使用React+Jest测试现有组件。它具有类似的函数过滤器:
const filterEmptyDeliveries = (arr): Promise<string[] | never> => {
if (arr.length === 0) {
return Promise.reject("empty") as any as Promise<never>
}
return Promise.resolve(arr) as Promise<string[]>
}
在我的组件中,我称其为这样:
const whiteListArr = []
const setupDeliveryType = async () => {
const tempAsin = [] // Empty or Not Empty
try {
... other code
if (tempAsin.length !== 0) {
if (whiteListArr.length === 0) {
whiteListArr.push(... some list computed above)
} else {
await filterEmptyDeliveries(asinWhiteList)
}
} else {
await filterEmptyDeliveries(whiteListArr)
}
} catch (err) {
console.log(err)
} finally {
setLoading(false)
}
}
这就是我在测试中嘲笑我
const filterEmptyDeliveries = jest.fn()
filterEmptyDeliveries.mockResolvedValue(['A12334567'])
it('calls setupDeliveryType ', async () => {
const wrapper = mount(<Component / >)
await act(flushPromises)
wrapper.update()
await act(flushPromises)
const whiteList = ['B00000000']
... other tests that pass so i'm pretty confident the code reaches here
await act(flushPromises)
expect(filterEmptyDeliveries).toHaveBeenCalled() // Fails
/// Fails with
Expected number of calls: >= 1
Received number of calls: 0
})
在哪里出错的方式?
I'm using React+JEST to test an existing component. It has a function filterDeliveries like so :
const filterEmptyDeliveries = (arr): Promise<string[] | never> => {
if (arr.length === 0) {
return Promise.reject("empty") as any as Promise<never>
}
return Promise.resolve(arr) as Promise<string[]>
}
In my component I call it like this:
const whiteListArr = []
const setupDeliveryType = async () => {
const tempAsin = [] // Empty or Not Empty
try {
... other code
if (tempAsin.length !== 0) {
if (whiteListArr.length === 0) {
whiteListArr.push(... some list computed above)
} else {
await filterEmptyDeliveries(asinWhiteList)
}
} else {
await filterEmptyDeliveries(whiteListArr)
}
} catch (err) {
console.log(err)
} finally {
setLoading(false)
}
}
This is how I'm mocking in my tests
const filterEmptyDeliveries = jest.fn()
filterEmptyDeliveries.mockResolvedValue(['A12334567'])
it('calls setupDeliveryType ', async () => {
const wrapper = mount(<Component / >)
await act(flushPromises)
wrapper.update()
await act(flushPromises)
const whiteList = ['B00000000']
... other tests that pass so i'm pretty confident the code reaches here
await act(flushPromises)
expect(filterEmptyDeliveries).toHaveBeenCalled() // Fails
/// Fails with
Expected number of calls: >= 1
Received number of calls: 0
})
Where Am I going wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在模拟一个称为filterDelive的函数,但是该组件正在调用filteremptydeliveries。
You are mocking a function called filterDeliveries, but the component is calling filterEmptyDeliveries.