Skip to main content
Module

x/mock_fetch/README.md

An extremely simple way to mock globalThis.fetch responses
Go to Latest
File

deno_mock_fetch

An extremely simple window.fetch mock for Deno.

Usage

Import the library and install the mock. Any fetches after calling install() will throw an error if you haven’t mocked the route.

import * as mf from "https://deno.land/x/mock_fetch@0.1.0/mod.ts";

// Replaces window.fetch with the mocked copy
mf.install();

Call mock with a route (optionally starting with a method specifier, eg. DELETE@) and a function (can be async). Whenever that route is fetched, the function will be executed and the response will be returned.

mf.mock("GET@/api/hello/:name", (_req, match) => {
  return new Response(`Hello, ${match.params["name"]}!`, {
    status: 200,
  });
});

const res = await fetch("https://localhost:1234/api/hello/SeparateRecords");
const text = await res.text(); //=> "Hello, SeparateRecords!"

You can remove all routes by calling reset().

mf.reset();
// now, /api/hello/:name will throw again

And when you want to restore the un-mocked fetch, call uninstall().

mf.uninstall();

Of course, you don’t have to replace the global fetch function, you can access the mocked fetch directly via mockedFetch.

import ky from "https://cdn.skypack.dev/ky?dts";

const mockedKy = ky.extend({
  fetch: mf.mockedFetch,
});