Skip to content
Vitest 1
Main Navigation ÚtmutatóAPIKonfigurációHaladó
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Útmutató

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Reporterek

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Böngésző mód

Forráskódba épített tesztelés

Tesztkörnyezet

Tesztkörnyezet

Egyezésvizsgálók kiterjesztése

IDE integrációk

Hibakeresés

Összehasonlítás más tesztfuttatókkal

Migrálási útmutató

Gyakori hibák

A teljesítmény javítása

API

Teszt API Dokumentáció

Mock függvények

Vi

expect

expectTypeOf

assert

assertType

Konfiguráció

A Vitest konfigurációs fájl beállítása

Vitest konfigurálása

Ezen az oldalon

Tesztkörnyezet ​

A Playwright Fixtures által inspirálva, a Vitest tesztkörnyezete lehetővé teszi segédfüggvények (utils), állapotok és fixture-ök definiálását a tesztekhez.

Használat ​

A teszt callback függvényének első argumentuma mindig egy tesztkörnyezet.

ts
import { it } from 'vitest';

it('működnie fog', ctx => {
  // Kiírja a teszt nevét
  console.log(ctx.task.name);
});

Beépített tesztkörnyezet ​

context.task ​

Egy csak olvasható objektum, amely metaadatokat tartalmaz a tesztről.

context.expect ​

Az aktuális teszthez kötött expect API:

ts
import { it } from 'vitest';

it('a matek könnyű', ({ expect }) => {
  expect(2 + 2).toBe(4);
});

Ez az API hasznos a pillanatkép-tesztek párhuzamos futtatásához, mert a globális expect nem tudja nyomon követni őket:

ts
import { it } from 'vitest';

it.concurrent('a matek könnyű', ({ expect }) => {
  expect(2 + 2).toMatchInlineSnapshot();
});

it.concurrent('a matek nehéz', ({ expect }) => {
  expect(2 * 2).toMatchInlineSnapshot();
});

context.skip ​

Kihagyja a teszt további végrehajtását és kihagyottként jelöli:

ts
import { expect, it } from 'vitest';

it('a matek nehéz', ({ skip }) => {
  skip();
  expect(2 + 2).toBe(5);
});

Tesztkörnyezet kiterjesztése ​

A Vitest két különböző módszert kínál a tesztkörnyezet kiterjesztéséhez.

test.extend ​

WARNING

Ez az API a Vitest 0.32.3 verziójától érhető el.

A Playwright -hez hasonlóan ezzel a módszerrel definiálhat saját test API-t egyedi fixture-ökkel, és azt bárhol felhasználhatja.

Például először létrehozunk egy myTest -et két fixture-rel, todos és archive.

ts
// my-test.ts
import { test } from 'vitest';

const todos = [];
const archive = [];

export const myTest = test.extend({
  todos: async ({ task }, use) => {
    // A fixture inicializálása minden teszt előtt
    todos.push(1, 2, 3);

    // A fixture értékének felhasználása
    await use(todos);

    // A fixture felszabadítása minden tesztfüggvény után
    todos.length = 0;
  },
  archive,
});

Ezután importálhatjuk és használhatjuk.

ts
import { expect } from 'vitest';
import { myTest } from './my-test.ts';

myTest('elemek hozzáadása a teendőlistához', ({ todos }) => {
  expect(todos.length).toBe(3);

  todos.push(4);
  expect(todos.length).toBe(4);
});

myTest(
  'elemek áthelyezése a teendőlistából az archívumba',
  ({ todos, archive }) => {
    expect(todos.length).toBe(3);
    expect(archive.length).toBe(0);

    archive.push(todos.pop());
    expect(todos.length).toBe(2);
    expect(archive.length).toBe(1);
  }
);

A myTest kiterjesztésével további fixture-öket is hozzáadhatunk, vagy felülírhatjuk a meglévőket.

ts
export const myTest2 = myTest.extend({
  settings: {
    // ...
  },
});

Fixture inicializálás ​

A Vitest futtató intelligensen inicializálja a fixture-öket, és a használat alapján illeszti be őket a tesztkörnyezetbe.

ts
import { test } from 'vitest';

async function todosFn({ task }, use) {
  await use([1, 2, 3]);
}

const myTest = test.extend({
  todos: todosFn,
  archive: [],
});

// a todosFn nem fog végrehajtódni
myTest('', () => {});
myTest('', ({ archive }) => {});

// a todosFn végrehajtódni fog
myTest('', ({ todos }) => {});

WARNING

A test.extend() használatakor fixture-ökkel, a { todos } objektum destrukturálási mintát kell alkalmazni a környezet eléréséhez a fixture és a teszt függvényekben is.

Automatikus fixture ​

WARNING

Ez a funkció a Vitest 1.3.0 verziójától érhető el.

A Vitest a tuple szintaxist is támogatja a fixture-ökhöz, lehetővé téve, hogy opciókat adj meg minden egyes fixture-höz. Például használhatod arra, hogy explicit módon inicializálj egy fixture-t, még akkor is, ha azt nem használják tesztekben.

ts
import { test as base } from 'vitest';

const test = base.extend({
  fixture: [
    async ({}, use) => {
      // ez a függvény le fog futni
      setup();
      await use();
      teardown();
    },
    { auto: true }, // Megjelölés automatikus fixture-ként
  ],
});

test('', () => {});

TypeScript ​

Fixture típusok megadásához az összes egyéni környezetéhez, átadhatja a fixture típust általános típusként.

ts
interface MyFixtures {
  todos: number[];
  archive: number[];
}

const myTest = test.extend<MyFixtures>({
  todos: [],
  archive: [],
});

myTest('', context => {
  expectTypeOf(context.todos).toEqualTypeOf<number[]>();
  expectTypeOf(context.archive).toEqualTypeOf<number[]>();
});

beforeEach és afterEach ​

Minden teszt külön környezetet kap. Hozzáférhet és kiterjesztheti őket a beforeEach és afterEach hook-okon belül.

ts
import { beforeEach, it } from 'vitest';

beforeEach(async context => {
  // környezet kiterjesztése
  context.foo = 'bar';
});

it('működnie fog', ({ foo }) => {
  console.log(foo); // 'bar'
});

TypeScript ​

Ahhoz, hogy tulajdonság típusokat definiáljon az egyéni környezetekhez, bővítse a TestContext típust a következő hozzáadásával:

ts
declare module 'vitest' {
  export interface TestContext {
    foo?: string;
  }
}

Ha csak bizonyos beforeEach, afterEach, it és test hook-okhoz szeretne tulajdonság típusokat definiálni, akkor a típust általánosként adhatja át.

ts
interface LocalTestContext {
  foo: string;
}

beforeEach<LocalTestContext>(async context => {
  // a context típusa 'TestContext & LocalTestContext'
  context.foo = 'bar';
});

it<LocalTestContext>('működnie fog', ({ foo }) => {
  // a foo típusa 'string'
  console.log(foo); // 'bar'
});
Pager
Előző oldalForráskódba épített tesztelés
Következő oldalTesztkörnyezet

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/test-context

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors