# JS筆記 jest (上) 首先創出package.json ``` $ yarn init -y ``` 安裝jest ``` $ yarn add --dev jest ``` 安裝完後,在package.json內加上 ``` "scripts": { "test": "jest" } ``` 測試的原則- 3A 原則: Arrange 、 Act 、 Assert Arrange 初始化 Act 行為 Assert 測試結果 這邊用從銀行取錢當例子 首先創出兩個js檔案 bank.js 寫function bank.test.js寫測試 測試的規格: ``` 存錢功能: 1. 可以存錢 2. 不可以存 0 元或是小於 0 元的金額(越存錢越少! 3. 領錢功能 4. 可以領錢 5. 不能領 0 元或是小於 0 元的金額(越領錢越多! 6. 不能領超過本身餘額 ``` --- Arrange 初始化,創一個銀行賬號,使用BankAccount方法創一個新的account(帳號),內有5元 *bank.test.js* ``` test("存錢功能",()=>{ const account = new BankAccount(5) }) ``` --- 在*bank.test.js*最上面加上,從bank.js引入function ``` const BankAccount = require('./bank'); ``` 並且在*bank.js*加上 ``` module.exports = BankAccount ``` --- *bank.test.js* Act 行為,這裡再設一個方法deposit代表著存錢這個行為,往account裡面存10元 ```javascript const BankAccount = require('./bank'); test("存錢功能",()=>{ const account = new BankAccount(5) account.deposit(10) }) ``` --- *bank.test.js* Assert 測試結果,測試account的結餘balance應該有多少錢(值)?原有5元,存入10元,因此裡面應該要有15元 ```javascript const BankAccount = require('./bank'); test("存錢功能",()=>{ const account = new BankAccount(5) account.deposit(10) expect(account.balance).toBe(15); }) ``` --- *bank.js* ```javascript class BankAccount { constructor(){ } deposit(){} get balance(){ return 15 } } module.exports = BankAccount ``` 這裡只求先通過第一個測試,get會將物件屬性,綁定到屬性被檢索時,所呼叫的函式。所以會回傳出15給測試。 運行測試 ``` $yarn run test ``` ![](https://i.imgur.com/Zh20tu2.png) 會看到通過測試,PASS