INTEGRITY Документация

Начало работы

В этом руководстве показано, как написать базовый интеграционный тест для Worker с помощью createTestHarness(). В примере в качестве средства запуска тестов используется Vitest, и тестируется Worker, собранный с помощью Wrangler.

Предварительные требования

Вам понадобится:

Создайте инфраструктуру для тестирования

Импорт createTestHarness() от wrangler. Укажите тестовому окружению путь к файлу конфигурации вашего Worker.

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" }],
});

Управление жизненным циклом тестового окружения

Для простоты мы будем использовать один и тот же сервер для всего набора тестов и сбрасывать его после каждого теста. Можно также запускать новый сервер для каждого теста, если тесты не используют одну и ту же конфигурацию.

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();
});

Напишите свой первый тест

Используйте вспомогательные функции предоставляемый тестовым окружением для взаимодействия с Worker и проверки его поведения. Например, вы можете вызвать server.fetch() чтобы отправить запрос к Worker и проверить ответ с помощью assert.

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");
});