此问题类似于How would you mock 'onPress' within Alert?
但是,由于此处给出的解决方案在这种情况下不适用,因此我发布了这个新问题。
我正在使用一个外部库,该库提供类似功能以响应本机Alert.alert,并增加了异步支持。该库为https://github.com/slorber/react-native-alert-async。
我正在尝试模拟该异步警报(AlertAsync
)上的OK /取消事件,但是,如上所述,“标准”反应本机Alert.alert的解决方案不适用于此处。< / p>
这里有两个挑战:
有什么建议怎么做?
这是我尝试过的:
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()