这个问题与
How would you mock 'onPress' within Alert?
但是,由于给出的解决方案在本例中不适用,我将发布这个新问题。
我使用的外部库提供了类似的功能来响应本机alert.alert并添加异步支持。图书馆是
https://github.com/slorber/react-native-alert-async
是的。
我试图模拟异步警报上的确定/取消事件(
AlertAsync
,但是,如上所述,“标准”react native alert.alert的解决方案不适用于此。
这里有两个挑战:
-
第一个,类似于react native的alert,模拟ok/cancel操作
-
第二种方法是,与上面的方法一起处理异步警报
有什么建议吗?
我试过的是:
定义
jest.mock('react-native-alert-async', () => {
return {
AlertAsync: jest.fn()
}
})
测试
第1期。
用于以下目的:
AlertAsync.calls[0][2][1].onPress()
我得到:
TypeError: Cannot read property '0' of undefined
问题2。
在测试中,我需要首先调用(它调用alertasync),以便触发alertasync
然而,由于它是异步的,我需要做'等待'为它,所以根本没有被调用…
下面是一个显然不起作用的测试示例:
expect.assertions(1)
await instance.handleCallingFunction()
AlertAsync.calls[0][2][1].onPress() // onPress Cancel
expect(<some-state>).toEqual(<expected-state>)
expect(<some-function>).toHaveBeenCalled()
expect(AlertAsync).toHaveBeenCalled()