Vue - Jest 測試及 GitLab CI 入門

此篇文章介紹以下內容,主要是簡單的環境建立,提供要做自動化測試的入門使用

  1. 如何在 Vue 專案建立 Jest 測試
  2. 如何在 push 至 GitLab 時進行自動化測試

 

新專案 - 透過 Vue Cli 建立 Jest


使用 Vue Cli 新增專案

這裡選擇 Jest 作為我的測試框架

專案完成建立後,只要使用 npm run test:unit 就可以進行測試


現有專案 - 透過 Vue Cli 建立 Jest


使用已下指令可以直接將 Jest 加到現有的專案

vue add unit-jest

它會建立和設定好我們所需要的所有資源

然後和前一項目一樣,使用 npm run test:unit 就可以進行測試


現有專案 - 手動建立 Jest 


1. 安裝 Jestbabel-jest@vue/test-utils--D (或 --dev) 代表他們只會在開發環境下運行

npm install jest babel-jest vue-jest @vue/test-utils --D

2. 在 package.json 內做一些設定

"jest": {
  "moduleFileExtensions": [
    // 告訴 Jest 要處理哪些文件
    "js",
    "json",
    "vue"
  ],
  "transform": {
    //用 `babel-jest` 處理 js
    "^.+\\.js$": "<rootDir>/node_modules/babel-jest"
  },
  "moduleNameMapper": {
    // 如果有設置 /src 的別名為 @,要加上這個設定
    "@/(.*)$": "<rootDir>/src/$1"
  }
}

3. 在 package.json 內加上 "test": "jest"

"scripts": {
  "test": "jest",
}

 4. 然後就可以開始寫測試了,以下為一個範例,在任何一個 folder 內新增包含 .test.js 的檔案,Jest 會預設測試包含 .test.js.spec.js 的檔案,可以參考 testRegex

describe("test", () => {
  it("if 1 is equal to 1", () => {
    expect("1").toMatch("1");
  });
});

5. 如果發現 eslint 標註 'describe' is not defined 的話

可以在 .eslintrc.js 內新增這個設定 

"env": {
    "jest": true
}

 6. 最後,執行測試!

npm run test

 

GitLab CI 自動化測試


使用 GitLab CI 的自動化測試很容易,GitLab 會認得 yaml 檔,在 push 異動後自動針對 yaml 的內容來執行
首先在專案的 root 建立 .gitlab-ci.yml 

unit test:
  image: node:latest
  stage: test
  script:
    - npm install --progress=false
    - npm run test
  • image: node:latest - 使用最新或特定版本的 node image
  • script - 在這下面撰寫要執行的指令


Push 異動到 GitLab 後,GitLab 就會自動執行測試,是否成功也都可以很清楚在 Pipeline 內看到

 

Reference