コンテンツにスキップ

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

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

手順

  1. 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); ```

  2. HTTP サーバーを起動する

    shell npm install -g http-server node index.js

  3. テスト

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