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