如何在@testing-library/react-native 中测试异步处理程序?

How do I test an async handler in @testing-library/react-native?

我想不通,但这可能很简单。

假设我有这个:

   <MyComponent amazingAction={action}/>
   <MagicButton/>

所以它本质上是一个带有句柄的组件和另一个在单击时将执行异步操作的组件。由于该异步操作,MyComponent 中的处理程序将被触发。

我主要想测试一下,如果我同时渲染两者并触发按钮上的点击,处理程序将被调用。

我试过这个:

const maybeThisWorks = jest.fn();

const { getByText } = render(
      <MyComponent amazingAction={maybeThisWorks}/>
      <MagicButton title="My Button"/>
);

let button = getByText("My Button");
fireEvent.press(button);

expect(maybeThisWorks).toHaveBeenCalled();

使用waitFor。您需要将测试函数更改为 async.

await waitFor(() => expect(maybeThisWorks).toHaveBeenCalled());