Komme i gang
This page was AI-translated by PageTurner (beta). Not officially endorsed by the project. Found an error? Report issue →
Installer Jest med din favorittpakkehåndterer:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
bun add --dev jest
La oss komme i gang med å skrive en test for en hypotetisk funksjon som adderer to tall. Først oppretter du en sum.js-fil:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Deretter oppretter du en fil som heter sum.test.js. Denne vil inneholde selve testen vår:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Legg til følgende seksjon i din package.json:
{
"scripts": {
"test": "jest"
}
}
Til slutt kjører du yarn test eller npm test, og Jest vil skrive ut denne meldingen:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Du har nettopp skrevet din første test med Jest!
Denne testen brukte expect og toBe for å verifisere at to verdier var helt identiske. For å lære om andre ting Jest kan teste, se Bruke matchere.
Kjøre fra kommandolinje
Du kan kjøre Jest direkte fra kommandolinjen (hvis den er globalt tilgjengelig i PATH-miljøvariabelen, f.eks. via yarn global add jest eller npm install jest --global) med en rekke nyttige alternativer.
Slik kjører du Jest på filer som matcher my-test, bruker config.json som konfigurasjonsfil og viser en systemvarsling etter kjøringen:
jest my-test --notify --config=config.json
Hvis du vil lære mer om å kjøre jest via kommandolinjen, se siden Jest CLI-alternativer.
Tilleggskonfigurasjon
Generere en grunnleggende konfigurasjonsfil
Basert på prosjektet ditt vil Jest stille deg noen spørsmål og opprette en grunnleggende konfigurasjonsfil med en kort beskrivelse for hvert alternativ:
- npm
- Yarn
- pnpm
- Bun
npm init jest@latest
yarn create jest
pnpm create jest
bunx create-jest
Bruke Babel
For å bruke Babel, installer nødvendige avhengigheter:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
pnpm add --save-dev babel-jest @babel/core @babel/preset-env
bun add --dev babel-jest @babel/core @babel/preset-env
Konfigurer Babel for din nåværende Node-versjon ved å opprette en babel.config.js-fil i roten av prosjektet:
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
Den ideelle Babel-konfigurasjonen avhenger av prosjektet ditt. Se Babels dokumentasjon for flere detaljer.
Making your Babel config jest-aware
Jest will set process.env.NODE_ENV to 'test' if it's not set to something else. You can use that in your configuration to conditionally setup only the compilation needed for Jest, e.g.
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. To avoid this behavior, you can explicitly reset the transform configuration option:
module.exports = {
transform: {},
};
Bruke med bundlere
For det meste trenger du ikke gjøre noe spesielt for å jobbe med ulike bundlere – unntaket er hvis du har plugins eller konfigurasjoner som genererer filer eller har egendefinerte filoppløsningsregler.
Bruke webpack
Jest kan brukes i prosjekter som bruker webpack til å håndtere ressurser, stiler og kompilering. Webpack gir noen unike utfordringer sammenlignet med andre verktøy. Se webpack-guiden for å komme i gang.
Bruke Vite
Jest støttes ikke av Vite på grunn av inkompatibiliteter med Vites pluginsystem.
Det finnes eksempler på Jest-integrasjon med Vite i vite-jest-biblioteket. Dette biblioteket er imidlertid ikke kompatibelt med Vite-versjoner nyere enn 2.4.2.
Et alternativ er Vitest som har et API-kompatibelt med Jest.
Bruke Parcel
Jest kan brukes i prosjekter som bruker parcel-bundler til å håndtere ressurser, stiler og kompilering på samme måte som webpack. Parcel krever null konfigurasjon. Se de offisielle dokumentene for å komme i gang.
Bruke TypeScript
Via babel
Jest støtter TypeScript via Babel. Først må du forsikre deg om at du har fulgt instruksjonene for bruk av Babel ovenfor. Deretter installer @babel/preset-typescript:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
bun add --dev @babel/preset-typescript
Legg deretter til @babel/preset-typescript i listen over presets i babel.config.js.
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
Det er imidlertid noen begrensninger ved bruk av TypeScript med Babel. Siden TypeScript-støtten i Babel kun er transpilering, vil ikke Jest utføre typekontroll på testene dine under kjøring. Hvis du ønsker dette, kan du bruke ts-jest i stedet, eller kjøre TypeScript-kompilatoren tsc separat (eller som del av byggeprosessen din).
Via ts-jest
ts-jest er en TypeScript-preprosessor med kildekartstøtte for Jest som lar deg bruke Jest til å teste prosjekter skrevet i TypeScript.
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev ts-jest
yarn add --dev ts-jest
pnpm add --save-dev ts-jest
bun add --dev ts-jest
For at Jest skal kunne transpilere TypeScript med ts-jest, kan det hende du må opprette en konfigurasjonsfil.
Typedefinisjoner
Det finnes to måter å få typede Jest globale API-er for testfiler skrevet i TypeScript.
Du kan bruke typedefinisjoner som følger med Jest og oppdateres hver gang du oppdaterer Jest. Installer @jest/globals-pakken:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @jest/globals
yarn add --dev @jest/globals
pnpm add --save-dev @jest/globals
bun add --dev @jest/globals
Og importer API-ene derfra:
import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';
describe('sum module', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
});
Se ekstra bruksdokumentasjon for describe.each/test.each og mock functions.
Du kan også installere @types/jest-pakken. Den gir typer for Jest-globaler uten at du trenger å importere dem.
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @types/jest
yarn add --dev @types/jest
pnpm add --save-dev @types/jest
bun add --dev @types/jest
@types/jest er et tredjepartsbibliotek vedlikeholdt av DefinitelyTyped, så nyeste Jest-funksjoner eller versjoner dekkes kanskje ikke ennå. Forsøk å matche versjoner av Jest og @types/jest så nært som mulig. For eksempel: Hvis du bruker Jest 27.4.0 er det ideelt å installere 27.4.x av @types/jest.
Bruke ESLint
Jest kan brukes med ESLint uten ekstra konfigurasjon så lenge du importerer Jest globale hjelpefunksjoner (describe, it, etc.) fra @jest/globals før bruk i testfilen. Dette er nødvendig for å unngå no-undef-feil fra ESLint, som ikke kjenner til Jest-globalene.
Hvis du vil unngå disse importene, kan du konfigurere ESLint-miljøet ditt til å støtte disse globalene ved å legge til jest-miljøet:
import {defineConfig} from 'eslint/config';
import globals from 'globals';
export default defineConfig([
{
files: ['**/*.js'],
languageOptions: {
globals: {
...globals.jest,
},
},
rules: {
'no-unused-vars': 'warn',
'no-undef': 'warn',
},
},
]);
Eller bruk eslint-plugin-jest, som har lignende effekt:
{
"overrides": [
{
"files": ["tests/**/*"],
"plugins": ["jest"],
"env": {
"jest/globals": true
}
}
]
}