Hopp til hovedinnhold
Versjon: 30.0

Komme i gang

Unofficial Beta Translation

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 install --save-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 init jest@latest

Bruke Babel

For å bruke Babel, installer nødvendige avhengigheter:

npm install --save-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:

babel.config.js
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.

babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.

return {
// ...
};
};
notat

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:

jest.config.js
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 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 install --save-dev @babel/preset-typescript

Legg deretter til @babel/preset-typescript i listen over presets i babel.config.js.

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 install --save-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 install --save-dev @jest/globals

Og importer API-ene derfra:

sum.test.ts
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);
});
});
tips

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 install --save-dev @types/jest
info

@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
}
}
]
}