Javascript 如何使用react本机测试库模拟useEffect异步调用?

Javascript 如何使用react本机测试库模拟useEffect异步调用?,javascript,reactjs,react-native,jestjs,react-native-testing-library,Javascript,Reactjs,React Native,Jestjs,React Native Testing Library,我正在尝试使用以下内容测试具有useEffect挂钩的屏幕: export const SomeScreen: React.FC<Props> = ({}) => { const [isSensorAvailable, setIsSensorAvailable] = useState(false); useEffect(() => { const isSensorAvailableCheck = async () => { try {

我正在尝试使用以下内容测试具有useEffect挂钩的屏幕:

export const SomeScreen: React.FC<Props> = ({}) => {

  const [isSensorAvailable, setIsSensorAvailable] = useState(false);

  useEffect(() => {
    const isSensorAvailableCheck = async () => {
      try {
        await FingerprintScanner.isSensorAvailable();
        setIsSensorAvailable(true);
      } catch (error) {
        console.log(error);
      }
    };

    isSensorAvailableCheck();
  }, []);
  
  ...
   Here goes code that renders View if the sensor is available
  ...
}
但当我运行这个测试时,它永远不会结束。还尝试使用
act(…)
对其进行包装,但也不起作用,错误如下:
无法访问未安装的测试呈现程序上的.root


感谢您的帮助,谢谢

我最终使用了
findByTestId
而不是
getByTestId
,现在它运行良好


import {default as FingerprintScannerMock} from 'react-native-fingerprint-scanner';

jest.mock('react-native-fingerprint-scanner');

(FingerprintScannerMock.isSensorAvailable as jest.Mock).mockResolvedValue(true);

const createTestProps = (props: Object) => ({
  navigation: {
    navigate: jest.fn(),
  },
  ...props,
});

describe('Testing some screen', () => {

   test('testing some functionalities', async () => {
     let props: any;
    props = createTestProps({});

    const component = render(
      <Provider store={store}>
        <RegisterPasswordScreen {...props} />
      </Provider>,
    );

    const {getByText, getByTestId, getAllByTestId} = component;

    const container = getByTestId('containerId');

    expect(container).toBeTruthy();
   });

});


  const component = await waitFor(() =>
       render(<Provider store={store}>
         <RegisterPasswordScreen {...props} />
        </Provider>,
       );
   );