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