Skip to content

Instantly share code, notes, and snippets.

@kleinron
Created December 5, 2021 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kleinron/9b68ff2b8ca01ed35b2621a7a8ea34c6 to your computer and use it in GitHub Desktop.
Save kleinron/9b68ff2b8ca01ed35b2621a7a8ea34c6 to your computer and use it in GitHub Desktop.
nodejs test server
const http = require('http');
const incomingRequests = [];
const requestListener = function (req, res) {
let data = '';
req.on('data', chunk => {
data += chunk;
});
req.on('end', () => {
incomingRequests.push(data);
res.writeHead(200);
res.end('ok');
});
}
const server = http.createServer(requestListener);
const port = parseInt(process.env.TEST_PORT || "8080");
describe("Test Something", async () => {
before("start server", async () => {
const p = new Promise((resolve, reject) => {
try {
server.listen(port, (err) => {
if (err) {
reject(err);
} else {
console.log(`test server is listening on port ${port}`);
resolve();
}
});
} catch (e) {
reject(e);
}
});
await p;
});
after("stop server", async () => {
const p = new Promise(((resolve, reject) => {
try {
server.close((err => {
if (err) {
reject(err);
} else {
resolve();
}
}));
} catch (e) {
reject(e);
}
}));
await p;
});
it("test foo", async () => {
// server is listening on `http://127.0.0.1:${port}`
// incoming requests are waiting in incomingRequests
// last request is available in incomingRequests[incomingRequests.length - 1]
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment