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

Переход с unstable_dev

unstable_dev API был рекомендуемым способом запуска интеграционных тестов. @cloudflare/vitest-plugin пакет напрямую интегрируется с Vitest для быстрых повторных запусков, поддерживает как модульные, так и интеграционные тесты и обеспечивает изолированное хранилище для каждого теста.

В этом руководстве показаны ключевые различия между тестами, написанными с помощью unstable_dev API и интеграцию Workers Vitest. Подробнее о написании тестов с интеграцией Workers Vitest см. Напишите свой первый тест.

Использование Worker для интеграционного тестирования

С unstable_dev, чтобы вызвать fetch событие, это можно сделать так:

import { unstable_dev } from "wrangler"

it("dispatches fetch event", () => {
  const worker = await unstable_dev("src/index.ts");
  const resp = await worker.fetch("http://example.com");
  ...
})

При использовании Workers Vitest integration того же результата можно добиться с помощью exports от cloudflare:workers. exports.default ссылается на экспорт по умолчанию, определённый в main параметр в вашем конфигурационный файл Wrangler. Это main Worker выполняется в том же isolate, что и тесты, поэтому любые глобальные моки также будут к нему применяться.

import { exports } from "cloudflare:workers";
import "../src/"; // Currently required to automatically rerun tests when `main` changes

it("dispatches fetch event", async () => {
	const response = await exports.default.fetch("http://example.com");
	...
});

Остановка Worker

При использовании Workers Vitest integration останавливать Worker через worker.stop(). Эта функциональность обрабатывается автоматически после выполнения тестов.

Импорт конфигурации Wrangler

Через unstable_dev API можно указать конфигурационный файл Wrangler добавив его в качестве параметра:

await unstable_dev("src/index.ts", {
	config: "wrangler.toml",
});

При использовании Workers Vitest integration теперь можно задать эту ссылку как конфигурационный файл Wrangler в vitest.config.js для всех ваших тестов:

import { cloudflareTest } from "@cloudflare/vitest-plugin";
import { defineConfig } from "vitest/config";

export default defineConfig({
	plugins: [
		cloudflareTest({
			wrangler: {
				configPath: "wrangler.jsonc",
			},
		}),
	],
});

Тестирование service Workers

В отличие от unstable_dev API интеграция Workers Vitest не поддерживает тестирование Workers в формате service worker. Сначала потребуется переход на формат ES-модулей чтобы использовать интеграцию Workers с Vitest.

Определение типов

Можно удалить UnstableDevWorker импорты из вашего кода. Вместо этого следуйте Руководство по написанию первого теста чтобы определить типы для всех ваших тестов.

- import { unstable_dev } from "wrangler";
- import type { UnstableDevWorker } from "wrangler";
+ import worker from "src/index.ts";

  describe("Worker", () => {
-   let worker: UnstableDevWorker;
    ...
  });