← Cloudflare Workers / workers / testing / test-harness
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:
- Projekt Workeru s Konfigurační soubor Wrangler
- Test runner pro Node.js, například Vitest ↗
wranglernainstalovaný jako vývojová závislost
Vytvořte test harness
Import createTestHarness() z wrangler. Nasměrujte testovací harness na konfigurační soubor svého Workeru.
import { createTestHarness } from "wrangler";
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});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.
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();
});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.
import { test } from "vitest";
test("responds", async ({ expect }) => {
const response = await server.fetch("/");
expect(await response.text()).toBe("Hello World");
});import { test } from "vitest";
test("responds", async ({ expect }) => {
const response = await server.fetch("/");
expect(await response.text()).toBe("Hello World");
});