npm.io
0.2.3 • Published 4 years ago

expressively-mocked-fetch

Licence
GPL-3.0-only
Version
0.2.3
Deps
3
Size
44 kB
Vulns
4
Weekly
16

expressively-mocked-fetch

npm version

A fetch mock that launches express as a worker_thread to help testing.

Installation

NOTE: This library uses worker_threads, a nodejs builtin that was released with node v13.

$ npm i -D expressively-mocked-fetch

Why

Mocking fetch is annoying. I saw msw. But it didn't fit my use case. So I ended up writing a wrapper around express.js.

Develop

  1. Download this repo and install the dependencies
  2. Run npm run test

Usage

// with ava
const test = require("ava");
const createWorker = require("expressively-mocked-fetch");

test("if module is loaded and executed", async (t) => {
  const worker = await createWorker(`
// regular express.js code
app.get('/', function (req, res) {
  res.send("hello world");
});
  `);

  const res = await fetch(`http://localhost:${worker.port}`);
  const text = await res.text();
  t.assert(test === "hello world");
});
createWorker(string, object)
  • string needs to be valid Node.js JavaScript

  • object is of shape { requestCount: Number, port: Number }, where:

    • requestCount (optional, default: 1) is the amount of times a server should respond before automatically shutting itself.
    • port (optional, default: 0) is the desired port the server should launch at. For dynamic allocation by the OS, use the default value 0.
    • pauseMilliseconds (optional, default: 0) the time in milliseconds a server must delay sending an answer using connect-pause.

Changelog

0.2.3
  • Introduce optional option pauseMilliseconds that allows simulating a server's delayed response-ability.
0.2.2
  • Allow template's app to be overwritten by using let.
0.2.1
  • (Bug fix): options allows now to set individual keys without forgetting all default options.
0.2.0
  • Refactor createWorker function signature to allow an options object.
  • Add port to options that allows a user to define a port before launching a worker.
0.1.2
  • Using node.js's worker_threads now allows expressively-mocked-fetch to spawn threads without the usage of temporary files. Interface remains the same.
0.1.1
  • Add support for Content-Type: text/calendar and potentially other types.
0.1.0
  • Allow accepting text/plain and application/json.
0.0.3
  • Allow defaultCount option allows a worker to exist for more than 1 request.
0.0.2
  • Bug fix: Create new module file for each worker to allow running in parallel.
0.0.1
  • Initial release

LICENSE

See LICENSE file.

Keywords