Javascript &引用;测试运行完成一秒钟后,Jest没有退出;天然味精

Javascript &引用;测试运行完成一秒钟后,Jest没有退出;天然味精,javascript,react-native,testing,jestjs,react-testing-library,Javascript,React Native,Testing,Jestjs,React Testing Library,我试着做一个简单的测试 import 'react-native'; import React from 'react'; import App from '../src/App'; import {render} from '@testing-library/react-native'; // Silence the warning https://github.com/facebook/react-native/issues/11094#issuecomment-263240420 jes

我试着做一个简单的测试

import 'react-native';
import React from 'react';
import App from '../src/App';
import {render} from '@testing-library/react-native';

// Silence the warning https://github.com/facebook/react-native/issues/11094#issuecomment-263240420
jest.mock('react-native/Libraries/Animated/src/NativeAnimatedHelper');

it('renders correctly', async () => {
  const {findByText, findAllByText} = render(<App />);
  const homeText = await findByText(/home/i);
  expect(homeText).toBeTruthy();
});

在web环境中,我看到可以解决停止某些服务的问题,例如
mongoose.close()
,但在RN idk中,应该停止什么来解决该消息。你能帮我吗

编辑:此pic显示控制台使用
--detectOpenHandles
标志运行

代码如下

HomeScreen.js

import React from 'react';
import {Button, FlatList, Text, TouchableOpacity, View} from 'react-native';
import {useQuery} from 'react-query';
import {routes} from '../utils/routes';
import {getBirras} from '../utils/services';

const HomeScreen = ({navigation}) => {
  const {data, error, isLoading} = useQuery('/beers', getBirras);
  const itemStyle = {color: 'black', fontSize: 26};

  if (isLoading) {
    return <Text>Cargando...</Text>;
  }

  if (error) {
    return <Text>Error al cargas birras</Text>;
  }

  return (
    <React.Fragment>
      <Text>Home page {data && data.length}</Text>
      {data && (
        <FlatList
          keyExtractor={(item, index) => item.name}
          data={data}
          renderItem={({item}) => {
            return (
              <TouchableOpacity
                onPress={() =>
                  navigation.navigate(routes.detailsPage, {id: item.id})
                }>
                <Text style={itemStyle}>
                  {item.name} - {item.id}
                </Text>
              </TouchableOpacity>
            );
          }}
        />
      )}

      <Button
        title="Go to detail"
        onPress={() => navigation.navigate(routes.detailsPage)}
      />
    </React.Fragment>
  );
};

export default HomeScreen;
import React from 'react';
import {Text, View} from 'react-native';
import {useQuery} from 'react-query';
import {getABirra} from '../utils/services';

const DetailsScreen = ({route}) => {
  const {id} = route.params;

  const {data, error, isLoading} = useQuery(['detailBirra', id], getABirra);
  
  return (
    <View style={{color: 'black'}}>
      {data && (
        <>
          <Text style={{color: 'black'}}>Slogan: {data[0].tagline}</Text>
          <Text>Description: {data[0].description}</Text>
        </>
      )}
    </View>
  );
};

export default DetailsScreen;
import Config from 'react-native-config';

export const getBirras = async () => {
  try {
    const data = await fetch(`${Config.API_URL}/beers`);
    return data.json();
  } catch (error) {
    throw error.response;
  }
};

export const getABirra = async ({queryKey}) => {
  try {
    const data = await fetch(`${Config.API_URL}beers/${queryKey[1]}`);
    return data.json();
  } catch (error) {
    return error.response;
  }
};
services.js

import React from 'react';
import {Button, FlatList, Text, TouchableOpacity, View} from 'react-native';
import {useQuery} from 'react-query';
import {routes} from '../utils/routes';
import {getBirras} from '../utils/services';

const HomeScreen = ({navigation}) => {
  const {data, error, isLoading} = useQuery('/beers', getBirras);
  const itemStyle = {color: 'black', fontSize: 26};

  if (isLoading) {
    return <Text>Cargando...</Text>;
  }

  if (error) {
    return <Text>Error al cargas birras</Text>;
  }

  return (
    <React.Fragment>
      <Text>Home page {data && data.length}</Text>
      {data && (
        <FlatList
          keyExtractor={(item, index) => item.name}
          data={data}
          renderItem={({item}) => {
            return (
              <TouchableOpacity
                onPress={() =>
                  navigation.navigate(routes.detailsPage, {id: item.id})
                }>
                <Text style={itemStyle}>
                  {item.name} - {item.id}
                </Text>
              </TouchableOpacity>
            );
          }}
        />
      )}

      <Button
        title="Go to detail"
        onPress={() => navigation.navigate(routes.detailsPage)}
      />
    </React.Fragment>
  );
};

export default HomeScreen;
import React from 'react';
import {Text, View} from 'react-native';
import {useQuery} from 'react-query';
import {getABirra} from '../utils/services';

const DetailsScreen = ({route}) => {
  const {id} = route.params;

  const {data, error, isLoading} = useQuery(['detailBirra', id], getABirra);
  
  return (
    <View style={{color: 'black'}}>
      {data && (
        <>
          <Text style={{color: 'black'}}>Slogan: {data[0].tagline}</Text>
          <Text>Description: {data[0].description}</Text>
        </>
      )}
    </View>
  );
};

export default DetailsScreen;
import Config from 'react-native-config';

export const getBirras = async () => {
  try {
    const data = await fetch(`${Config.API_URL}/beers`);
    return data.json();
  } catch (error) {
    throw error.response;
  }
};

export const getABirra = async ({queryKey}) => {
  try {
    const data = await fetch(`${Config.API_URL}beers/${queryKey[1]}`);
    return data.json();
  } catch (error) {
    return error.response;
  }
};

你能试试npm测试--detectOpenHandles吗?如果有任何日志,我可以试试这个标志,但是没有任何额外的日志,日志在那里结束:(必须是
中的某个异步操作。你能共享该文件的代码吗?是的,我的主屏幕中有一个api调用,请给我一点时间用该文件的代码编辑帖子。对此有任何更新吗?我最近遇到了相同的错误。你能尝试
npm测试--detectOpenHandles
吗?如果有任何日志,请尝试使用该标志,但没有错误。)o任何额外的日志,日志都会在那里结束:(必须在
中进行一些异步操作。您可以共享该文件的代码吗?是的,我的主屏幕中有一个api调用,请给我一点时间用文件的代码编辑帖子。对此有任何更新吗?我最近遇到了相同的错误。