整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
(26)被迫吃芒果的前端工程師 - Mocha - MongoDB 讀取
前言
接下來就是關於讀取的測試撰寫囉~
讀取
那麼一樣我們先建立一個檔案叫做 reading_test.js,然後因為每一次執行測試檔案都會被刪除
1 | |
因此在做讀取測試的時候,我們也是一樣要自己去新增使用者資料,但是這次就不再一一建立,而是在執行這個測試單元之前,先跑一下 beforeEach,在執行每一個測試之前我們都要先跑過一輪 beforeEach,透過這個小技巧我們可以先將使用者給儲存到資料庫內
1 | |
你可能會想說為什麼要將 judy 宣告在外面,主要原因是因為我們會一直需要使用到 User 實例化之後的 _id 因此就必須將該實例化給儲存在外層,這樣子每一次都可以取得 _id。
接下來起手式其實都差不多,都是 describe 然後多個 it,因此這邊就不再多解釋了。
find
首先一開始最簡單的就是 find,我們都知道 find 會找出相同名字的使用者,並且回傳一個陣列,因此你可能會這樣寫
1 | |
基本上這樣寫 assert(user[0]._id === judy._id) 是會發生錯誤的,原因是因為 user[0]._id 跟 judy._id 會回傳一個物件型別

那麼該怎麼解決呢?其實非常簡單,只需要使用 toString 來呼叫就可以解決囉~
1 | |
透過 toString 語法我們就可以正確取得一個單純的字串 ID 而不是一個物件哩。
findOne
findOne 與 find 雷同,但主要是搜尋一筆資料,而這個測試大多我們會用 id 來做比較,但是這邊再傳入給 MongoDB 的時候不用特別使用 toString() 只需要直接使用就好
1 | |
分頁概念
我們在開發系統的時候其實很常使用分頁功能,而分頁功能其實就是使用 MongoDB 中的幾個語法做到的
limit- 限制筆數
skip- 跳過幾筆
最後我們可能會排序一下,那麼就會使用 sort 來排序一下資料,而寫法非常簡單,如果你有寫過 jQuery 的話會覺得很簡單,因為就是鏈式寫法。
但是我們這邊資料只有一筆,因此要新增兩三筆來達到這個需求,所以要稍微改一下 beforeEach,這邊我就不說明了
1 | |
測試呢?我就直接給範例不說明哩
1 | |
以上就是 MongoDB 的測試讀取練習哩。
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ