是 Ray 不是 Array

整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ

Advertisement
2022-03-15 Nodejs

(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
connect mongoDB

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

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

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

你的支持會直接轉換成更多技術筆記

如果我的筆記讓你少踩一個坑、節省 Debug 的時間,
也許你可以請我喝杯咖啡,讓我繼續當個不是 Array 的 Ray ☕

buymeacoffee | line | portaly
Terminal

整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ

Advertisement

分享這篇文章

留言

© 2026 Ray. All rights reserved.

Powered by Ray Theme