(23)被迫吃芒果的前端工程師 - Mocha - MongoDB 起手與連接資料庫

前言

前面我們已經快速瞭解了 Mocha 基本入門,因此接下來就要來開始撰寫 MongoDB 的部分,但是在開始撰寫 MongoDB 之前我們必須先做一些事情,也就是初始化的部分。

連接資料庫

首先一開始我們必須先將前面寫在 test_helper.js 中的東西刪除,而這邊我們一率都是使用 Mongoose 來撰寫,那麼在前面章節我們有說描述到,一開始要透過 Mongoose 連接資料庫的話,語法必定是以下

1
2
mongoose.connection.once('open', () => console.log('connected to database'));
mongoose.connection.on('error', (error) => console.error('database error', error));

那麼在 Mocha 中該如何撰寫呢?其實非常簡單,我們必須使用 before 的測試方法,因為我們必須在「全部測試開始之前」先連接資料庫,因此這一段就非常簡單

1
2
3
4
5
6
7
8
9
10
const { before } = require('mocha');
const mongoose = require('mongoose');
require('dotenv').config();

before((done) => {
mongoose.connect(process.env.DATABASE_URL);
mongoose.connection
.once('open', () => done())
.on('error', (error) => console.error('database error', error));
})

(process.env.DATABASE_URL 是 env 變數,在此就不多做介紹。)

ok,那接下來該怎麼執行測試呢?前面我們有新增一個指令是 test,你可以在終端機輸入 npm run test,基本上就可以執行成功。

但是你應該會發現都沒有任何提示訊息,所以我們可以稍微調整一下上方語法

1
2
3
4
5
6
7
8
9
10
11
12
13
const { before } = require('mocha');
const mongoose = require('mongoose');
require('dotenv').config();

before((done) => {
mongoose.connect(process.env.DATABASE_URL);
mongoose.connection
.once('open', () => {
console.log('connect mongoDB');
done()
})
.on('error', (error) => console.error('database error', error));
})

這樣當你執行 npm run test 就可以看到 connect mongoDB 的提示訊息

connect mongoDB

恭喜你已經完成第一個測試了,也就是連接資料庫。

那麼回頭講一下為什麼裡面多了一個 done,主要原因是 mongoose 在操作上都是非同步的,那麼身為前端工程師來講,相信一定非常清楚非同步的問題,因此在 Mocha 如果要解決非同步的問題的話,那就要使用 Mocha 所提供的 done 來解決,確保連接成功後才往下執行。

那這一章節我們先到這邊結束,後面也會深入玩一些方式 Mocha 怎麼測試 Express 的部分。

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ