Jest - 附加配置
在本节中,我们将指导您为各种环境(如 TypeScript、React、Vue 和 Next.js)设置 Jest。我们还将介绍用于与 Babel、Webpack 和 ESLint 等工具集成的其他 Jest 配置。这将帮助您测试后端和前端应用程序,并与您已经使用的其他工具集成。
各种配置步骤
在这里,我们将展示使用不同语言、框架和库的其他配置。
使用 Jest 设置 TypeScript 环境
在本节中,我们将向您展示如何为 TypeScript 项目设置 Jest,包括初始化项目、安装依赖项、配置 Jest 以及编写基本的 TypeScript 测试。
- 项目初始化:首先,创建一个新的项目目录并初始化一个新的 Node.js 项目:
mkdir typescript-jest-project cd typescript-jest-project npm init -y
npm install --save-dev typescript npm install --save-dev jest npm install --save-dev ts-jest npm install --save-dev @types/jest
npx tsc --init
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src'],
transform: {
'^.+\.tsx?$': 'ts-jest'
},
testRegex: '(/__tests__/.*|(\.|/)(test|spec))\.tsx?$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']
};
export function multiply(a: number, b: number): number {
return a * b;
}
import { multiply } from '../src/math';
describe('Multiplication', () => {
test('multiplies two numbers', () => {
expect(multiply(2, 3)).toBe(6);
});
});
npx jest
使用 Jest 设置 React 环境
本节介绍如何在 React 项目中设置 Jest。您将学习如何创建 React 应用、安装测试库以及配置 Jest 以测试 React 组件。
- 创建 React 项目:首先使用 TypeScript 创建一个新 React 应用:
npx create-react-app react-jest-project --template typescript cd react-jest-project
# 安装 React 测试库 npm install --save-dev @testing-library/react npm install --save-dev @testing-library/jest-dom npm install --save-dev @testing-library/user-event
// jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['@testing-library/jest-dom/extend-expect'],
moduleNameMapper: {
'\.(css|less|scss|sass)$': 'identity-obj-proxy'
}
};
// src/App.test.tsx
import React from 'react';
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});
{
"scripts": {
"test": "react-scripts test",
"test:watch": "react-scripts test --watch",
"test:coverage": "react-scripts test --coverage"
}
}
npm testJest 将运行测试套件,您将在终端中看到结果。如果一切设置正确,测试应该会通过。
使用 Jest 设置 Vue.js 环境
在本节中,我们将指导您在 Vue.js 项目中使用 TypeScript 设置 Jest,涵盖项目创建、依赖项安装、Jest 配置以及编写简单测试。
- 使用 Vue CLI 使用 TypeScript 创建 Vue 项目:
vue create vue-jest-project # 导航到项目目录 cd vue-jest-project
npm install --save-dev @vue/test-utils @vue/vue3-jest jest ts-jest
module.exports = {
preset: '@vue/vue3-jest', // 使用 Vue 3 Jest preset
testEnvironment: 'jsdom', // 测试环境
transform: {
'^.+\.vue$': '@vue/vue3-jest',
'^.+\.js$': 'babel-jest',
'^.+\.ts$': 'ts-jest'
},
testRegex: '(/__tests__/.*|(\.|/)(test|spec))\.(jsx?|tsx?)$' // 匹配测试文件
};
<template>
<div>
<h1>Hello, Vue!</h1>
</div>
</template>
<script lang="ts">
export default {
name: 'App'
}
</script>
import { mount } from '@vue/test-utils'
import App from '../src/App.vue'
describe('App.vue', () => {
it('renders the correct text', () => {
const wrapper = mount(App)
expect(wrapper.text()).toContain('Hello, Vue!')
})
})
npm run test
如果一切设置正确,Jest 将运行测试并显示结果。
使用 Jest 设置 Next.js 环境
在本节中,我们将指导您在 Next.js 项目中设置 Jest。这包括创建项目、安装必要的依赖项、配置 Jest 以及编写简单的测试。
- 首先,创建一个新的 Next.js 项目:
npx create-next-app next-jest-project cd next-jest-project
npm install --save-dev jest @testing-library/react @testing-library/jest-dom ts-jest
// jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
transform: {
'^.+\.tsx?$': 'ts-jest',
'^.+\.js$': 'babel-jest',
},
moduleNameMapper: {
'\.css$': 'identity-obj-proxy',
},
setupFilesAfterEnv: ['@testing-library/jest-dom/extend-expect'],
};
// components/Hello.tsx
import React from 'react';
const Hello = () => {
return <h1>Hello, Next.js!</h1>;
};
export default Hello;
// components/Hello.test.tsx
import { render, screen } from '@testing-library/react';
import Hello from './Hello';
test('renders Hello, Next.js!', () => {
render(<Hello />);
const element = screen.getByText(/Hello, Next.js!/i);
expect(element).toBeInTheDocument();
});
"scripts": {
"test": "jest"
}
npm test
Babel Integration
如果您的项目使用 Babel 转换 JavaScript 代码,您可以将其配置为与 Jest 配合使用进行测试。
- 安装 Babel 依赖项:如果您尚未安装 Babel,请运行:
npm install --save-dev babel-jest @babel/core @babel/preset-env
module.exports = {
presets: ['@babel/preset-env'],
};
ESLint 集成
为了避免在使用 Jest 运行测试时出现 linting 问题,您可以配置 ESLint 以了解 Jest 的全局变量。
- 为 Jest 配置 ESLint:在您的 .eslintrc.json 或 .eslintrc.js 文件中,将 Jest 添加到环境中:
{
"env": {
"jest": true
}
}
npm install --save-dev eslint-plugin-jest
Jest 与 Webpack
如果您的项目使用 Webpack 进行捆绑,Jest 将自动与其配合使用。但是,如果您遇到任何问题,可以添加 babel-jest 包。
- 安装 Webpack 依赖项:如果您使用的是 Webpack,请确保您有 babel-jest 以将其与 Jest 集成:
npm install --save-dev babel-jest webpack

