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);