A utility for testing Express middleware by serving exactly one HTTP request then closing the server. It creates an HTTP server on a free port, runs the middleware, serves one request, and resolves with the response body. The current stable version is 3.0.2, released in early 2024. It supports GET, POST, PUT, DELETE, HEAD, and other methods. The package was rewritten in v3 to remove node-fetch dependency and requires Node >=18. It returns responses as string, JSON, buffer, or stream. It is lightweight and similar to supertest but simpler and focused on single-request testing.
npm install serve-onceVerified import paths — ran on the pinned version, not inferred.
Demonstrates basic usage: create server with middleware, make GET request, get response as string. Also shows request.get() with custom options.
Upgrade Node to version 18 or later.
Ensure your environment supports global fetch (Node 18+).
Use const serveOnce = require('serve-once'); const {request} = serveOnce(middleware);const result = await request('get', '/', { type: 'json' });Ensure you call require('serve-once')(middleware) which returns an object with request method. Use const {request} = serveOnce(middleware); then request.get('/path')Use CommonJS require via createRequire or use dynamic import: const serveOnce = (await import('serve-once')).default;