← Cloudflare Workers / workers / testing / test-harness
Начало работы
В этом руководстве показано, как написать базовый интеграционный тест для Worker с помощью createTestHarness(). В примере в качестве средства запуска тестов используется Vitest, и тестируется Worker, собранный с помощью Wrangler.
Предварительные требования
Вам понадобится:
- Проект Worker с конфигурационный файл Wrangler
- Тестовый раннер Node.js, например Vitest ↗
wranglerустановлен как зависимость для разработки
Создайте инфраструктуру для тестирования
Импорт createTestHarness() от wrangler. Укажите тестовому окружению путь к файлу конфигурации вашего Worker.
import { createTestHarness } from "wrangler";
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});import { createTestHarness } from "wrangler";
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});Управление жизненным циклом тестового окружения
Для простоты мы будем использовать один и тот же сервер для всего набора тестов и сбрасывать его после каждого теста. Можно также запускать новый сервер для каждого теста, если тесты не используют одну и ту же конфигурацию.
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();
});Напишите свой первый тест
Используйте вспомогательные функции предоставляемый тестовым окружением для взаимодействия с Worker и проверки его поведения. Например, вы можете вызвать server.fetch() чтобы отправить запрос к Worker и проверить ответ с помощью assert.
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");
});