← Cloudflare Workers / workers / testing / vitest-integration / migration-guides
Переход с 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;
...
});Дополнительные материалы
- Напишите свой первый тест - Пишите модульные тесты для Workers.