Node.js でテスト用サーバー¶
テスト用に HTTP サーバーを立てる方法
手順¶
-
index.js を作成する。
```js const http = require('http');
const server = http.createServer(); server.on('request', async (req, res) => { console.log(req.url); res.writeHead(200); res.end('OK\r\n'); }); server.listen(8080); ```
-
HTTP サーバーを起動する
shell npm install -g http-server node index.js
-
テスト
shell curl -v http://localhost:8080
実装例¶
レスポンスを返す¶
const http = require('http');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const server = http.createServer();
server.on('request', async (req, res) => {
console.log(req.url);
res.writeHead(500);
res.end('Internal Server Error\r\n');
});
server.listen(8080);
スリープ¶
応答まで時間をかけたり、タイムアウトのテストに。
const http = require('http');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const server = http.createServer();
server.on('request', async (req, res) => {
console.log(req.url);
await sleep(1000);
res.writeHead(200);
res.end('OK\r\n');
});
server.listen(8080);
少しずつ応答する。
const http = require('http');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const server = http.createServer();
server.on('request', async (req, res) => {
console.log(req.url);
res.writeHead(200);
for (let i = 0; i < 10; i++) {
await sleep(1000);
res.write(String(i));
}
res.end('OK\r\n');
});
server.listen(8080);
ファイルを返す¶
const http = require('http');
const fs = require('fs');
const filePath = 'testfile';
const server = http.createServer();
server.on('request', async (req, res) => {
console.log(req.url);
const stat = fs.statSync(filePath);
res.writeHead(200, {
'Content-Type': 'application/octet-stream',
'Content-Length': stat.size
});
fs.createReadStream(filePath).pipe(res);
});
server.listen(8080);