expressively-mocked-fetch

0.2.3 • Public • Published

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.

Package Sidebar

Install

npm i expressively-mocked-fetch

Weekly Downloads

10

Version

0.2.3

License

GPL-3.0-only

Unpacked Size

45.4 kB

Total Files

7

Last publish

Collaborators

  • timdaub