← Cloudflare Workers / workers / testing / miniflare / core
Веб-стандарты
- Справочник по веб-стандартам
- Справочник по кодированию
- Справочник по Fetch
- Справочник по Request
- Справочник по Response
- Справочник Streams
- Справочник Web Crypto
Подмена исходящих fetch Запросы
При использовании API Miniflare позволяет подставлять собственные Responses для
fetch() вызовов с использованием undici:
MockAgent API ↗.
Это полезно для тестирования Workers, которые отправляют HTTP запросы к другим сервисам. Чтобы
включить fetch для мокирования создайте
MockAgent ↗
с использованием createFetchMock() функция, затем задайте это с помощью fetchMock
параметр.
import { Miniflare, createFetchMock } from "miniflare";
// Create `MockAgent` and connect it to the `Miniflare` instance
const fetchMock = createFetchMock();
const mf = new Miniflare({
modules: true,
script: `
export default {
async fetch(request, env, ctx) {
const res = await fetch("https://example.com/thing");
const text = await res.text();
return new Response(\`response:\${text}\`);
}
}
`,
fetchMock,
});
// Throw when no matching mocked request is found
// (see https://undici.nodejs.org/#/docs/api/MockAgent?id=mockagentdisablenetconnect)
fetchMock.disableNetConnect();
// Mock request to https://example.com/thing
// (see https://undici.nodejs.org/#/docs/api/MockAgent?id=mockagentgetorigin)
const origin = fetchMock.get("https://example.com");
// (see https://undici.nodejs.org/#/docs/api/MockPool?id=mockpoolinterceptoptions)
origin
.intercept({ method: "GET", path: "/thing" })
.reply(200, "Mocked response!");
const res = await mf.dispatchFetch("http://localhost:8787/");
console.log(await res.text()); // "response:Mocked response!"Подзапросы
Miniflare не поддерживает ограничение объёма подзапросы. Учитывайте это, если ваш Worker выполняет большое количество подзапросов.