
為什麼要寫單元測試就不多說了,來用 Vitest 寫寫看測試。
由於 kintone 只能在瀏覽器端調用,所以在測試階段是找不到 kintone 這個東西的,因此先將 kintone mock 出來,之後才能調用到它。
我們模擬出 kintone.app.getId 這個功能,返回的應用程式 id 是 20。
// src/__mocks__/setup.test.ts
import { vi } from 'vitest'
vi.stubGlobal('kintone', {
  app: {
    getId: () => 20,
  },
})
這部分依照自己的需求去 mock,例如 api、plugin.app.getConfig 等等,真的寫不完。
在跟目錄的 vitest.config.ts 檔案的 setupFiles 寫上剛剛的路徑,就不用每隻測試檔案都要調用。
import { defineConfig } from 'vitest/config'
export default defineConfig({
  test: {
    setupFiles: './src/__mocks__/vitest.setup.ts',
    coverage: {
      provider: 'istanbul', // or 'v8'
    },
  },
})
然後再測試看看,沒意外會通過。
import { expect, it } from 'vitest'
it('app id 為 20', () => {
  const appId = kintone.app.getId()
  expect(appId).toEqual(20)
})
當然這個 20 直接這樣寫是不太好的,到時候要改 20 還要改兩個地方,測試才會過。
以上就是廢到不行的簡易單元測試。