代码之家  ›  专栏  ›  技术社区  ›  Yossi

你会在第三方图书馆里嘲笑“onpress”

  •  0
  • Yossi  · 技术社区  · 7 年前

    这个问题与 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()
    
    0 回复  |  直到 7 年前
    推荐文章