Kumasan850314 / kumasan850314.github.io

0 stars 0 forks source link

[筆記/測試] 利用 Jest 來寫你的第一個測試! #15

Open Kumasan850314 opened 1 year ago

Kumasan850314 commented 1 year ago

在終端機輸入什麼可以執行測試?

  1. 找到 package.json 的 script,把 test 的內容改成 jest,意思是 npm 去 node_modules 找 Jest 這個模組來使用。(從專案找 Jest )

    輸入 npm run test 就可以執行了。

    "scripts": {
    // "start": "node index.js",
    "test": "jest", // 會自己偵測 test 的檔案
    "test": "jest index.test.js", // 也可指定檔案
    },
  2. 直接在終端機輸入 npm run test 就可以執行了。

    補充:直接在終端機輸入 jset index.test.js 是沒辦法運作的,這樣意思是要終端機在系統上找 Jest,這必須再額外設定一些東西der。(從系統找 Jest)


index.js

function repeat(str, times){
 let result = ""
 for (let i = 0; i < times; i++) {
    result += str
 }
 return result
}
module.exports = repeat

index.test.js

var repeat = require('./index')
// 預期( 這個function()回傳值 ).應該是( 結果 ) 
describe('repeat 測試', function(){
    test('a repeat 5 times equals aaaaa', function() {
        expect(repeat('a', 5)).toBe('aaaaa');
    });
    test('abc repeat 1 times equals abc', function() {
        expect(repeat('abc', 1)).toBe('abc');
    });
    test('"" repeat 10 times equals ""', function() {
        expect(repeat('', 10)).toBe('');
    });
})

一個 test 就是一行,可以把它們塞進一個 describe,看起來會更清楚,'repeat 測試' 也會顯示終端機上。

Kumasan850314 commented 1 year ago

執行 npm run test時,碰到一個 error,把 NodeJs 安裝最新版本就解決了,紀錄一下。

 if (error?.stack) {
              ^
  SyntaxError: Unexpected token '.'
      at Object.compileFunction (vm.js:344:18)
      at wrapSafe (internal/modules/cjs/loader.js:1048:15)
      at Module._compile (internal/modules/cjs/loader.js:1082:27)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1138:10)
      at Module.load (internal/modules/cjs/loader.js:982:32)
      at Function.Module._load (internal/modules/cjs/loader.js:875:14)
      at Module.require (internal/modules/cjs/loader.js:1022:19)
      at require (internal/modules/cjs/helpers.js:72:18)
      at Object.<anonymous> (C:\Users\Kumas\20221226test\node_modules\jest\node_modules\jest-cli\build\index.js:12:12)
      at Module._compile (internal/modules/cjs/loader.js:1118:30)
  npm ERR! code ELIFECYCLE
  npm ERR! errno 1
  npm ERR! 20221226test@1.0.0 test: `jest index.test.js`
  npm ERR! Exit status 1
  npm ERR!
  npm ERR! Failed at the 20221226test@1.0.0 test script.
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

正確的測試結果,會有 PASS

image

錯誤的測試結果,Test Suites 就可以看到有測試失敗的次數

image