INTEGRITY Dokumentace

Začínáme

Tento průvodce ukazuje, jak napsat základní integrační test pro Worker pomocí createTestHarness(). Příklad používá Vitest jako test runner a testuje Worker sestavený pomocí Wrangler.

Předpoklady

Budete potřebovat:

Vytvořte test harness

Import createTestHarness() z wrangler. Nasměrujte testovací harness na konfigurační soubor svého Workeru.

test/index.test.js
import { createTestHarness } from "wrangler";

const server = createTestHarness({
	workers: [{ configPath: "./wrangler.jsonc" }],
});
test/index.test.ts
import { createTestHarness } from "wrangler";

const server = createTestHarness({
	workers: [{ configPath: "./wrangler.jsonc" }],
});

Správa životního cyklu testovacího rámce

Pro jednoduchost budeme pro celou testovací sadu opakovaně používat jeden server a po každém testu ho resetujeme. Pokud testy nesdílejí stejnou konfiguraci, můžete pro každý test spustit i nový server.

test/index.test.js
import { afterAll, afterEach, beforeAll } from "vitest";

beforeAll(async () => {
	// Start the server before all tests
	await server.listen();
});

afterEach(async () => {
	// Recreates storage and restores the original Worker options after each test
	await server.reset();
});

afterAll(async () => {
	// Close the server after all tests
	await server.close();
});
test/index.test.ts
import { afterAll, afterEach, beforeAll } from "vitest";

beforeAll(async () => {
	// Start the server before all tests
	await server.listen();
});

afterEach(async () => {
	// Recreates storage and restores the original Worker options after each test
	await server.reset();
});

afterAll(async () => {
	// Close the server after all tests
	await server.close();
});

Napište svůj první test

Použijte pomocné funkce poskytovaná testovacím harnessem pro interakci s Workerem a ověřování jeho chování. Můžete například volat server.fetch() pro odeslání požadavku Workeru a ověření jeho odpovědi.

test/index.test.js
import { test } from "vitest";

test("responds", async ({ expect }) => {
	const response = await server.fetch("/");
	expect(await response.text()).toBe("Hello World");
});
test/index.test.ts
import { test } from "vitest";

test("responds", async ({ expect }) => {
	const response = await server.fetch("/");
	expect(await response.text()).toBe("Hello World");
});