Skip to main content

Node.js でテスト用サーバー

テスト用に HTTP サーバーを立てる方法

手順

  1. index.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);
  2. HTTP サーバーを起動する

    npm install -g http-server
    node index.js
  3. テスト

    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');
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);