- Create __mocks__/ with react-native, expo-router, expo-constants, expo-status-bar, react-native-mmkv, @testing-library/react-native - Update vitest.config.ts with resolve aliases for all native modules - Add AuthScreen smoke test (3 tests) - Add HomeScreen smoke test (2 tests) - Add @types/react-test-renderer dev dependency - Total: 32 passing tests (27 store + 5 component)
45 lines
1006 B
TypeScript
45 lines
1006 B
TypeScript
/**
|
|
* Minimal expo-router mock for Vitest component tests.
|
|
*/
|
|
import React from 'react';
|
|
|
|
export const router = {
|
|
push: () => {},
|
|
replace: () => {},
|
|
back: () => {},
|
|
canGoBack: () => false,
|
|
};
|
|
|
|
export function useRouter() {
|
|
return router;
|
|
}
|
|
|
|
export function useLocalSearchParams() {
|
|
return {};
|
|
}
|
|
|
|
export function useSegments() {
|
|
return [];
|
|
}
|
|
|
|
export const Link = (props: Record<string, unknown>) =>
|
|
React.createElement('Link', props, props.children as React.ReactNode);
|
|
|
|
export const Stack = Object.assign(
|
|
(props: Record<string, unknown>) =>
|
|
React.createElement('Stack', props, props.children as React.ReactNode),
|
|
{
|
|
Screen: (props: Record<string, unknown>) =>
|
|
React.createElement('Stack.Screen', props),
|
|
},
|
|
);
|
|
|
|
export const Tabs = Object.assign(
|
|
(props: Record<string, unknown>) =>
|
|
React.createElement('Tabs', props, props.children as React.ReactNode),
|
|
{
|
|
Screen: (props: Record<string, unknown>) =>
|
|
React.createElement('Tabs.Screen', props),
|
|
},
|
|
);
|