Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何使用计时器编写useEffect的JEST测试?_React Native_Jestjs - Fatal编程技术网

React native 如何使用计时器编写useEffect的JEST测试?

React native 如何使用计时器编写useEffect的JEST测试?,react-native,jestjs,React Native,Jestjs,我正在使用@react native community/netinfo检测应用程序连接状态,并在连接丢失时显示消息。我如何为下面的代码编写一个测试,以确保消息显示/隐藏并且清理工作正常 const { isConnected } = useContext(ConnectionContext); ... useEffect(() => { const snack = setTimeout(() => { if (!isConnected) {

我正在使用
@react native community/netinfo
检测应用程序连接状态,并在连接丢失时显示消息。我如何为下面的代码编写一个测试,以确保消息显示/隐藏并且清理工作正常

  const { isConnected } = useContext(ConnectionContext); 
  ...
  useEffect(() => {
    const snack = setTimeout(() => {
      if (!isConnected) {
        showMessage({
          autoHide: false,
          message: 'Please try again later',
        });
      }
    }, 10000);
    const hideSnack = setTimeout(() => {
      if (isConnected) hideMessage();
    }, 5000);

    return () => {
      clearTimeout(snack);
      clearTimeout(hideSnack);
    };
  }, [isConnected]);
我尝试过类似的方法来检查应用程序是否已连接

jest.mock('@react-native-community/netinfo', () => ({
  ...jest.requireActual('@react-native-community/netinfo'),
  useNetInfo: () => ({
    isConnected: true,
  })
}));

您可以使用jest fake计时器来控制时间:

最常用

jest.useFakeTimers();
然后,当您需要提前一定数量的时间时,请使用:

jest.advanceTimersByTime(100);