Node.jsで開発とテストで接続先のデータベースを切り替える方法

Node.jsで開発用とテスト用で接続するデータベースを切り替える方法についての記事です。

テストフレームワークには Jest を利用しています。

Jest · 🃏 Delightful JavaScript Testing

方法としては NODE_ENV という環境変数によって接続先データベースの設定を切り替える方法です。Jest では当該の環境変数に何も設定されていない場合、test が設定される動作になるので、こいつを利用します。

データベースの設定を db.config.js (ファイル名は任意) に以下のように設定します。 development(開発用)、test(テスト用)で設定をわける形です。

module.exports = {
  development: {
    HOST: process.env.IP_ADDRESS || "localhost",
    PORT: process.env.POSTGRES_PORT || 15432,
    USER: "postgres",
    PASSWORD: "mysecretpassword",
    DB: "express_db",
    dialect: "postgres",
    pool: {
      max: 5,
      min: 0,
      acquire: 30000,
      idle: 10000
    }
  },
  test: {
    HOST: process.env.IP_ADDRESS || "localhost",
    PORT: process.env.POSTGRES_PORT || 15432,
    USER: "postgres",
    PASSWORD: "mysecretpassword",
    DB: "express_db_test",
    dialect: "postgres",
    pool: {
      max: 5,
      min: 0,
      acquire: 30000,
      idle: 10000
    }
  }
};

利用するコード側では以下のように require します。

const dbConfig = require('../configs/db.config.js')[process.env.NODE_ENV || 'development']

これで開発用では development 側の設定が取得され、テスト用(Jest時)は test 側の設定が取得されます。

最近個人的な開発で Node.js を使ってるんですが、なかなかおもしろいですね。

もう少し勉強が進めば、deno とか Typescript あたりにも手を出してみたいなと思っています。

以上です。

  • [環境情報]
    • Node.js v14.15.1
    • Jest 27.5.1