---
sidebar_position: 10
---

# 测试

Modern.js 默认集成了 [Jest](https://jestjs.io/) 的测试能力。

我们首先需要执行 `pnpm run new` 启用「单元测试 / 集成测试」功能：

```
? 请选择你想要的操作 启用可选功能
? 请选择功能名称 启用「单元测试 / 集成测试」功能
```

执行上述命令后，`package.json` 中将会自动生成 `"test": "modern test"` 命令。

在 `modern.config.ts` 中注册 Test 插件：

```ts title="modern.config.ts"
import testPlugin from '@modern-js/plugin-testing';

export default defineConfig({
  ...,
  plugins: [..., testPlugin()],
});
```

## 测试文件

Modern.js 默认识别的测试文件路径为：`<rootDir>/src/**/*.test.[jt]s?(x)` 和 `<rootDir>/tests/**/*.test.[jt]s?(x)`。

如果你需要自定义 test 目录，可通过 [tools.jest](/configure/app/tools/jest) 进行配置。

## 使用姿势

Modern.js test 支持使用 [testing-library](https://testing-library.com/docs/) 相关包 API，可直接通过 `@modern-js/runtime/testing` 进行导入:

```
import { render, screen } from '@modern-js/runtime/testing';
```

其他 Modern.js 支持的 testing API 可参考[这里](/apis/app/runtime/testing/cleanup)。

## transform

Modern.js 测试默认使用 [babel-jest](https://www.npmjs.com/package/babel-jest) 进行源码编译，如果你需要使用 [ts-jest](https://github.com/kulshekhar/ts-jest)，可以通过 [testing.transform](/configure/app/testing/transformer) 进行配置。
