{"library":"serve-once","title":"serve-once","description":"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.","language":"javascript","status":"active","last_verified":"Sat Apr 25","install":{"commands":["npm install serve-once"],"cli":null},"imports":["import { createRequire } from 'module'; const require = createRequire(import.meta.url); const { request } = require('serve-once')(middleware)","const { request } = require('serve-once')(middleware); request.get('/path')","const serveOnce = require('serve-once'); const { request } = serveOnce(middleware, defaultOptions)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { createRequire } from 'module';\nconst require = createRequire(import.meta.url);\n\nconst pullout = require('pullout');\nconst serveOnce = require('serve-once');\n\nconst middleware = (options = 'hello') => (req, res) => {\n  res.end(JSON.stringify(options));\n};\n\nconst { request } = serveOnce(middleware);\n\nconst response = await request('get', '/');\nconsole.log(response); // 'hello'\n\nconst result2 = await request.get('/', {\n  options: 'world'\n});\nconsole.log(result2); // 'world'","lang":"javascript","description":"Demonstrates basic usage: create server with middleware, make GET request, get response as string. Also shows request.get() with custom options.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}