Jest.js 如何模拟expo-camera requestCameraPermissionsAsync()响应?

tf7tbtn2  于 2023-04-18  发布在  Jest
关注(0)|答案(1)|浏览(121)

我正在尝试对我的一个react原生组件进行单元测试。一个场景需要我模拟expo-camera requestCameraPermissionsAsync()方法,但不知道如何进行。我试图做的是模拟状态始终具有granted值。
初始方法,如下:

jest.mock('expo-camera', () => {
  const PermissionsCamera = jest.requireActual('expo-camera');

  return {
    ...PermissionsCamera,
    requestCameraPermissionsAsync: () =>
      new Promise(resolve => resolve({granted: true, status: 'granted'})),
  };
});

但是这不起作用。需要帮助,上面的代码有什么问题吗?谢谢
更新:我如何在组件中实现:

import {Camera} from 'expo-camera'

useEffect(() => {
 (async () => {
   const {status} = await Camera.requestCameraPermissionsAsync();
   // additional logic when status is equal to 'granted'
 })();
}, []);
xam8gpfp

xam8gpfp1#

2023年答案

我和你一样在挣扎,然后我意识到Camera.requestPermissionsAsync()已经过时了。
我最终使用了钩子useCameraPermissions
并使用最新版本的expojest-expo

"expo": "^48.0.6",
"jest-expo": "^48.0.2",

相关问题