jest-preset
A Jest preset with support for React Native platform-specific extensions and TypeScript.
Usage
In a TypeScript-only Package (Non-React Native)
Add preset: "@rnx-kit/jest-preset"
to your Jest config:
module.exports = {
+ preset: "@rnx-kit/jest-preset",
...
};
@rnx-kit/jest-preset
will detect that you're not targeting React Native and
exclude any React Native specific configurations.
In a React Native Package
There are three ways to use this preset when targeting React Native, depending on your personal preference.
Single jest.config.js
If you prefer to use a single Jest config, you can provide the target platform
via an environment variable. First, add preset: "@rnx-kit/jest-preset"
to your
Jest config:
module.exports = {
+ preset: "@rnx-kit/jest-preset",
...
};
Then specify the target platform when running Jest:
RN_TARGET_PLATFORM=ios npm run jest
Multiple jest.config.js
Alternatively, you can have a Jest config file for each platform, e.g.:
// jest.config.ios.js
module.exports = require("@rnx-kit/jest-preset")("ios", {
...
});
Then specify the config file to use when running Jest:
npm run jest --config jest.config.ios.js
Use @rnx-kit/cli
You can specify the target platform using the rnx-test
command provided by
@rnx-kit/cli
. First, add preset: "@rnx-kit/jest-preset"
to your Jest config:
module.exports = {
+ preset: "@rnx-kit/jest-preset",
...
};
Then specify the target platform when running rnx-test
:
npm run react-native rnx-test --platform ios
In an Out-of-Tree Platform Package
Add preset: "@rnx-kit/jest-preset"
to your Jest config:
module.exports = {
+ preset: "@rnx-kit/jest-preset",
...
};
The target platform will be deduced by reading react-native.config.js
at the
package root.