@kiwa-lab/react-native
v2.1.0
Published
React Native platform mock harness for kiwa — AsyncStorage / React Navigation / Platform / Linking / Dimensions 5 primitive を統一 interface で invoke する in-process mock。 real device / simulator なしで RN app の platform-dependent path の test を書ける。
Maintainers
Readme
@kiwa-lab/react-native
React Native platform API mock harness for kiwa — AsyncStorage / React Navigation / Platform / Linking / Dimensions を統一 interface で in-process から叩ける test infra。
Installation
pnpm add -D @kiwa-lab/react-native
# or
npm install -D @kiwa-lab/react-native
# or
yarn add -D @kiwa-lab/react-nativeSupported providers
| Primitive | Status | Primary API |
|---|---|---|
| AsyncStorage | ✅ Ready | mockAsyncStorage |
| React Navigation | ✅ Ready | mockNavigation |
| Platform | ✅ Ready | setPlatform |
| Linking | ✅ Ready | dispatchLinkingUrl |
| Dimensions | ✅ Ready | setDimensions |
Quick start
import { describe, expect, it } from 'vitest';
import {
createRNTestEnv,
mockAsyncStorage,
mockNavigation,
} from '@kiwa-lab/react-native';
describe('login flow', () => {
it('token を storage に保存 + Home へ遷移', async () => {
const env = createRNTestEnv({ platform: 'ios' });
const storage = mockAsyncStorage({});
const nav = mockNavigation({ initial: 'Login' });
await storage.setItem('token', 't-1');
nav.navigate('Home');
expect(await storage.getItem('token')).toBe('t-1');
expect(nav.current).toBe('Home');
});
});API reference
createRNTestEnv({ platform: 'ios' | 'android' | 'web' }): RNTestEnv— platform 別 mock envmockAsyncStorage(initial: AsyncStorageInitial): AsyncStorageMock— get/set/remove/clear の in-memory mockmockNavigation({ initial: string }): NavigationMock— stack push/pop/reset tracedispatchLinkingUrl(url: string, listener: LinkingListener): void— deep link 経路発火setPlatform(os: RNPlatformOS): PlatformState— Platform.OS 書換setDimensions({ width, height }): DimensionsState— Dimensions.get 書換
Test integration
vitest + /kiwa-react-native skill で real device / simulator 不要で platform-dependent test を機械生成、 CI で headless に実行。
License
UNLICENSED — see github.com/cardene777/kiwa.
