浏览 githubreact-native-netinfo
存储库,故障排除部分
然后,您应该将以下内容添加到您的 Jest 设置文件中以模拟 NetInfo 本机模块:
import mockRNCNetInfo from '@react-native-community/netinfo/jest/netinfo-mock.js';
jest.mock('@react-native-community/netinfo', () => mockRNCNetInfo);
他们的测试模拟是:
const defaultState = {
type: 'cellular',
isConnected: true,
isInternetReachable: true,
details: {
isConnectionExpensive: true,
cellularGeneration: '3g',
},
};
const RNCNetInfoMock = {
configure: jest.fn(),
fetch: jest.fn(),
addEventListener: jest.fn(),
useNetInfo: jest.fn(),
};
RNCNetInfoMock.useNetInfo.mockResolvedValue(defaultState);
鉴于此,我认为您可以在每个单元测试用例中制作自己的模拟解析值:
import { useNetInfo } from '@react-native-community/netinfo';
jest.mock('@react-native-community/netinfo', () => {
useNetInfo: jest.fn(),
});
...
// Happy path test, known type and internet unreachable
useNetInfo.mockResolvedValueOnce({
type: 'test', // not 'unknown'
isInternetReachable: false,
});
// assert render non-null
const { queryByText } = render(<OfflineNotice />);
expect(queryByText(/no internet connection/i)).not.toBeNull();
...
// Sad path test, known type and internet reachable
useNetInfo.mockResolvedValueOnce({
type: 'test', // not 'unknown'
isInternetReachable: true,
});
// assert render null
const { queryByText } = render(<OfflineNotice />);
expect(queryByText(/no internet connection/i)).toBeNull();
...
// Sad path test, unknown type and internet unreachable
useNetInfo.mockResolvedValueOnce({
type: 'unknown',
isInternetReachable: false,
});
// assert render null
const { queryByText } = render(<OfflineNotice />);
expect(queryByText(/no internet connection/i)).toBeNull();
...
// Sad path test, unknown type and internet reachable
useNetInfo.mockResolvedValueOnce({
type: 'test', // not 'unknown'
isInternetReachable: true,
});
// assert render null
const { queryByText } = render(<OfflineNotice />);
expect(queryByText(/no internet connection/i)).toBeNull();
React-Native-Testing-Library
反应测试库