Skip to content

Commit 9cd1456

Browse files
authored
docs: update jest api alternative (#603)
1 parent ffeb57f commit 9cd1456

File tree

2 files changed

+112
-34
lines changed

2 files changed

+112
-34
lines changed

website/docs/en/guide/migration/jest.mdx

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,28 @@ export default defineConfig({
3131
});
3232
```
3333

34+
### Jest configuration mappings
35+
3436
Here are some common Jest configurations and their Rstest equivalents:
3537

36-
| Jest Configuration | Rstest Equivalent |
37-
| ---------------------------- | --------------------------------------------------------------------- |
38-
| `testRegex` | [`include`](/config/test/include) |
39-
| `testMatch` | [`include`](/config/test/include) |
40-
| `testPathIgnorePatterns` | [`exclude`](/config/test/exclude) |
41-
| `transformIgnorePatterns` | [`source.exclude`](/config/build/source#sourceexclude) |
42-
| `displayName` | [`name`](/config/test/name) |
43-
| `rootDir` | [`root`](/config/test/root) |
44-
| `verbose` | [`verbose-reporter`](/config/test/reporters#verbose-reporter) |
45-
| `injectGlobals` | [`globals`](/config/test/globals) |
46-
| `moduleNameMapper` | [`resolve.alias`](/config/build/resolve#resolvealias) |
47-
| `collectCoverage` | [`coverage.enabled`](/config/test/coverage#enabled) |
48-
| `coverageDirectory` | [`coverage.reportsDirectory`](/config/test/coverage#reportsdirectory) |
49-
| `coverageProvider` | [`coverage.provider`](/config/test/coverage#provider) |
50-
| `coveragePathIgnorePatterns` | [`coverage.exclude`](/config/test/coverage#exclude) |
51-
| `coverageThreshold` | [`coverage.thresholds`](/config/test/coverage#thresholds) |
38+
| Jest Configuration | Rstest Equivalent |
39+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
40+
| `testRegex` | [`include`](/config/test/include) |
41+
| `testMatch` | [`include`](/config/test/include) |
42+
| `testPathIgnorePatterns` | [`exclude`](/config/test/exclude) |
43+
| `transformIgnorePatterns` | [`output.externals`](/config/build/output#outputexternals)[`source.exclude`](/config/build/source#sourceexclude) |
44+
| `displayName` | [`name`](/config/test/name) |
45+
| `rootDir` | [`root`](/config/test/root) |
46+
| `setupFilesAfterEnv` | [`setupFiles`](/config/test/setupFiles) |
47+
| `verbose` | [`verbose-reporter`](/config/test/reporters#verbose-reporter) |
48+
| `injectGlobals` | [`globals`](/config/test/globals) |
49+
| `moduleNameMapper` | [`resolve.alias`](/config/build/resolve#resolvealias) |
50+
| `maxWorkers` | [`pool.maxWorkers`](/config/test/pool) |
51+
| `collectCoverage` | [`coverage.enabled`](/config/test/coverage#enabled) |
52+
| `coverageDirectory` | [`coverage.reportsDirectory`](/config/test/coverage#reportsdirectory) |
53+
| `coverageProvider` | [`coverage.provider`](/config/test/coverage#provider) |
54+
| `coveragePathIgnorePatterns` | [`coverage.exclude`](/config/test/coverage#exclude) |
55+
| `coverageThreshold` | [`coverage.thresholds`](/config/test/coverage#thresholds) |
5256

5357
For more details, please refer to the [Configuration](/config) section.
5458

@@ -68,7 +72,18 @@ export default defineConfig({
6872

6973
### Code transformation
7074

71-
Rstest uses `swc` for code transformation by default, which is different from Jest's `babel-jest`. Most of the time, you don't need to change anything.
75+
Rstest uses `swc` for code transformation by default, which is different from Jest's `babel-jest`. Most of the time, you don't need to change anything. And you can configure your swc options through [tools.swc](/config/build/tools#toolsswc).
76+
77+
```diff
78+
export default {
79+
- transform: {
80+
- '^.+\\.(t|j)sx?$': ['@swc/jest', {}],
81+
- },
82+
+ tools: {
83+
+ swc: {}
84+
+ }
85+
}
86+
```
7287

7388
However, if you have custom Babel configurations or use specific Babel plugins/presets, you can add [Rsbuild's Babel Plugin](https://rsbuild.rs/plugins/list/plugin-babel):
7489

@@ -83,6 +98,8 @@ export default defineConfig({
8398

8499
## Update test API
85100

101+
### Test API
102+
86103
Your existing Jest test files should work with minimal changes since Rstest provides Jest-compatible APIs. Simply update your imports from Jest to Rstest:
87104

88105
```diff
@@ -98,3 +115,25 @@ Rstest provides a `rstest` API that you can use to access Rstest's utilities, su
98115

99116
fn.mockResolvedValue('foo');
100117
```
118+
119+
### Done callback
120+
121+
The `done` callback is not supported in Rstest. Instead, you can return a Promise or use `async/await` for asynchronous tests.
122+
123+
```diff
124+
- test('async test with done', (done) => {
125+
+ test('async test with done', () => new Promise(done => {
126+
// ...
127+
done();
128+
- });
129+
+ }));
130+
```
131+
132+
### Timeout
133+
134+
If you used `jest.setTimeout()` to set the timeout for a test, you can use `rstest.setConfig()` instead.
135+
136+
```diff
137+
- jest.setTimeout(5_000)
138+
+ rstest.setConfig({ testTimeout: 5_000 })
139+
```

website/docs/zh/guide/migration/jest.mdx

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,28 @@ export default defineConfig({
3131
});
3232
```
3333

34+
### Jest 配置映射
35+
3436
以下是一些常见的 Jest 配置及其对应的 Rstest 配置:
3537

36-
| Jest 配置 | Rstest 对等配置 |
37-
| ---------------------------- | --------------------------------------------------------------------- |
38-
| `testRegex` | [`include`](/config/test/include) |
39-
| `testMatch` | [`include`](/config/test/include) |
40-
| `testPathIgnorePatterns` | [`exclude`](/config/test/exclude) |
41-
| `transformIgnorePatterns` | [`source.exclude`](/config/build/source#sourceexclude) |
42-
| `displayName` | [`name`](/config/test/name) |
43-
| `rootDir` | [`root`](/config/test/root) |
44-
| `verbose` | [`verbose-reporter`](/config/test/reporters#verbose-reporter) |
45-
| `injectGlobals` | [`globals`](/config/test/globals) |
46-
| `moduleNameMapper` | [`resolve.alias`](/config/build/resolve#resolvealias) |
47-
| `collectCoverage` | [`coverage.enabled`](/config/test/coverage#enabled) |
48-
| `coverageDirectory` | [`coverage.reportsDirectory`](/config/test/coverage#reportsdirectory) |
49-
| `coverageProvider` | [`coverage.provider`](/config/test/coverage#provider) |
50-
| `coveragePathIgnorePatterns` | [`coverage.exclude`](/config/test/coverage#exclude) |
51-
| `coverageThreshold` | [`coverage.thresholds`](/config/test/coverage#thresholds) |
38+
| Jest 配置 | Rstest 对等配置 |
39+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
40+
| `testRegex` | [`include`](/config/test/include) |
41+
| `testMatch` | [`include`](/config/test/include) |
42+
| `testPathIgnorePatterns` | [`exclude`](/config/test/exclude) |
43+
| `transformIgnorePatterns` | [`output.externals`](/config/build/output#outputexternals)[`source.exclude`](/config/build/source#sourceexclude) |
44+
| `displayName` | [`name`](/config/test/name) |
45+
| `rootDir` | [`root`](/config/test/root) |
46+
| `setupFilesAfterEnv` | [`setupFiles`](/config/test/setupFiles) |
47+
| `verbose` | [`verbose-reporter`](/config/test/reporters#verbose-reporter) |
48+
| `injectGlobals` | [`globals`](/config/test/globals) |
49+
| `moduleNameMapper` | [`resolve.alias`](/config/build/resolve#resolvealias) |
50+
| `maxWorkers` | [`pool.maxWorkers`](/config/test/pool) |
51+
| `collectCoverage` | [`coverage.enabled`](/config/test/coverage#enabled) |
52+
| `coverageDirectory` | [`coverage.reportsDirectory`](/config/test/coverage#reportsdirectory) |
53+
| `coverageProvider` | [`coverage.provider`](/config/test/coverage#provider) |
54+
| `coveragePathIgnorePatterns` | [`coverage.exclude`](/config/test/coverage#exclude) |
55+
| `coverageThreshold` | [`coverage.thresholds`](/config/test/coverage#thresholds) |
5256

5357
更多详情,请参考 [配置文档](/config)
5458

@@ -68,7 +72,18 @@ export default defineConfig({
6872

6973
### 代码转换
7074

71-
Rstest 默认使用 `swc` 进行代码转换,这与 Jest 的 `babel-jest` 不同。大多数情况下,你不需要做任何更改。
75+
Rstest 默认使用 `swc` 进行代码转换,这与 Jest 的 `babel-jest` 不同。大多数情况下,你不需要做任何更改。你可以通过 [tools.swc](/config/build/tools#toolsswc) 配置你的 swc 选项。
76+
77+
```diff
78+
export default {
79+
- transform: {
80+
- '^.+\\.(t|j)sx?$': ['@swc/jest', {}],
81+
- },
82+
+ tools: {
83+
+ swc: {}
84+
+ }
85+
}
86+
```
7287

7388
如果你有自定义的 Babel 配置或使用特定的 Babel 插件/预设,你可以添加 [Rsbuild Babel 插件](https://rsbuild.rs/zh/plugins/list/plugin-babel)
7489

@@ -83,6 +98,8 @@ export default defineConfig({
8398

8499
## 更新测试 API
85100

101+
### 测试 API
102+
86103
Rstest 提供了与 Jest 兼容的 API。因此,你只需将导入从 Jest 更改为 Rstest:
87104

88105
```diff
@@ -98,3 +115,25 @@ Rstest 提供了 `rstest` API,你可以使用它来访问 Rstest 的工具函
98115

99116
fn.mockResolvedValue('foo');
100117
```
118+
119+
### Done 回调
120+
121+
Rstest 不支持 `done` 回调。作为替代,你可以返回一个 Promise 或使用 `async/await` 进行异步测试。
122+
123+
```diff
124+
- test('async test with done', (done) => {
125+
+ test('async test with done', () => new Promise(done => {
126+
// ...
127+
done();
128+
- });
129+
+ }));
130+
```
131+
132+
### 超时设置
133+
134+
如果你使用 `jest.setTimeout()` 来设置测试的超时时间,你可以改用 `rstest.setConfig()`
135+
136+
```diff
137+
- jest.setTimeout(5_000)
138+
+ rstest.setConfig({ testTimeout: 5_000 })
139+
```

0 commit comments

Comments
 (0)