練習 - 安裝套件
Tailwind Traders 小組正計劃開發數個 Node.js應用程式。 他們在 npm 登錄中找到 Jest 這個熱門的零設定測試架構。 他們希望您能安裝 Jest、撰寫一些測試,然後執行它們來評估其有效性。
使用 npm CLI 新增測試套件
您有一些可從字串擷取位址的程式碼。 您的工作很簡單: 安裝測試架構、撰寫一些測試,並加以執行。
在新的終端機視窗中 (Ctrl + Shift + `),變更為具有此練習檔案的資料夾:
cd node-dependencies/5-exercise-dependency
檢視資料夾的內容:
ls -R
在此資料夾中,您應該會看到兩個 JavaScript 檔案:
-| address-parser.js -| package.json
開啟 address-parser.js 檔案。 其看起來應該像下列檔案:
exports.addressParser = function parseOrder(order) { const match = order.match(/order:\s(?<order>\w+\s\w+).*address:\s(?<address>\w+\s\w+\s\w+).*payment info:\s(?<payment>\w+)/) return match.groups; }
此函式會接受字串,並剖析客戶的訂單內容、應在何處交付,以及如何付款的相關資訊。 我們將新增 Jest 並為該函式撰寫一些測試。
關閉
address-parser.js
檔案。執行下列命令來安裝 Jest 套件:
npm install jest --save-dev
安裝 Jest 套件之後,開啟
package.json
檔案並尋找devDependencies
區段。 您應該會看到類似此範例的項目,其中jest
屬性的值是語意版本號碼:"devDependencies": { "jest": "<number.number.number>" }
在 package.json 檔案中,找出
scripts
區段。 將現有的test
動作項目取代為下列程式碼:"test": "jest"
儲存變更並關閉 package.json 檔案。
在終端機中,建立名為 __tests__ 的新子資料夾。
mkdir __tests__
注意
建立 __tests__ 資料夾時,請務必使用雙底線。 測試資料夾是 Jest 測試架構所使用的命名慣例。 Jest 會自動辨識測試資料夾中的任何檔案(或名稱中含有 .test 或 .spec 的檔案) 作為測試檔案,並在執行測試時包含它們。 此慣例有助於保持專案中的測試文件井然有序且易於識別。
在 __tests__ 資料夾中,建立名為 address-parser.spec.js 的檔案,然後將下列內容新增至該檔案:
const { addressParser } = require('../address-parser'); describe('Address Parser', () => { test('should parse correctly', () => { expect(addressParser("I want to to order: 3 books to address: 112 street city here is my payment info: cardnumber") ).toEqual({ order: "3 books", address: "112 street city", payment: "cardnumber", }); }); });
測試指令碼:
- 檢查 address-parser.js 函式的剖析能力。
- 確保函式可以正確剖析出所需的資訊。
儲存變更並關閉該檔案。
您的專案結構現在看起來應該像下列範例:
-| package.json -| address-parser.js -| __tests__/ ---| address-parser.js
在終端中輸入下列命令以執行測試:
npm run test
您應該會取得下列輸出:
PASS __tests__/address-parser.js Address parser ✓ should parse correctly (2 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 0.4 s Ran all test suites.
成功! 您的測試通過,而且您已透過安裝相依性新增了測試。
恭喜! 您已成功安裝了 Jest 做為相依性、撰寫了應用程式碼的測試,以及執行了測試。 Jest 似乎如期實現,而 Tailwind Traders 可能會對此評估感到滿意。