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调用,请给我一点时间用文件的代码编辑帖子。对此有任何更新吗?我最近遇到了相同的错误。