Skip to content

Fetch.functions.makeMockLayer

fx-fetch


fx-fetch / Fetch / makeMockLayer

makeMockLayer(mockFn): Layer<Fetch, never, never>

Defined in: packages/fx-fetch/src/Fetch/makeMockLayer.ts:55

Creates a mock Fetch layer for testing purposes.

The mock function can return either a plain Response or an Effect<Response, E> for simulating both successful responses and error scenarios.

MockFn

Layer<Fetch, never, never>

import { Effect } from 'effect';
import { Fetch, Request, Response } from 'fx-fetch';
// Mock returning a simple Response
const mockLayer = Fetch.makeMockLayer(() =>
Response.unsafeMake({ status: 200, ok: true, body: 'Hello' })
);
Effect.gen(function* () {
const request = Request.unsafeMake({ url: 'https://example.com' });
const response = yield* Fetch.fetch(request);
}).pipe(
Effect.provide(mockLayer), // ◀︎── Provide mock layer
Effect.runPromise
);
import { Effect } from 'effect';
import { Fetch, Request, Response, Url } from 'fx-fetch';
// Mock using the request to return different responses
const mockLayer = Fetch.makeMockLayer((request) => {
if (Url.format(request.url).includes('/users')) {
return Response.unsafeMake({ status: 200, ok: true, body: JSON.stringify([{ id: 1 }]) });
}
return Response.unsafeMake({ status: 404, ok: false });
});

1.2.0