0.2.3 • Published 3 years ago
expressively-mocked-fetch v0.2.3
expressively-mocked-fetch
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-fetchWhy
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
- Download this repo and install the dependencies
- 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)
stringneeds to be valid Node.js JavaScriptobject 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 value0.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
pauseMillisecondsthat allows simulating a server's delayed response-ability.
0.2.2
- Allow template's
appto be overwritten by usinglet.
0.2.1
- (Bug fix):
optionsallows now to set individual keys without forgetting all default options.
0.2.0
- Refactor
createWorkerfunction signature to allow an options object. - Add
porttooptionsthat allows a user to define a port before launching a worker.
0.1.2
- Using node.js's
worker_threadsnow 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/calendarand potentially other types.
0.1.0
- Allow accepting
text/plainandapplication/json.
0.0.3
- Allow
defaultCountoption 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.