最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

單元測試框架Jest搭配TypeScript的安裝與配置方式

 更新時間:2023年01月21日 08:56:03   作者:__Simon  
這篇文章主要介紹了單元測試框架Jest搭配TypeScript的安裝與配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

為項目安裝并配置Jest單元測試環(huán)境

分步指南

傳送門:Jest - 快速入門

1. 安裝jest

npm i jest ts-jest @types/jest -D

2. 初始化

npx jest --init

按照圖中所示選擇

jest --init

tip:

  • - no;不使用ts,使用jest.config.js作為jest的配置文件;
  • - jsdom;使用jsdom作為測試環(huán)境(jsdom:一個類似瀏覽器的環(huán)境,項目是運行在瀏覽器的,需要在瀏覽器dom環(huán)境下測試);
  • - yes;是否添加測試報告;
  • - babel;使用babel提供的測試報告(官網(wǎng)說明v8仍處于試驗階段,需node14以上使用,效果未知,不穩(wěn)定,因此選用babel);

3. 安裝jsdom環(huán)境 

  • jest 28及以上版本不再內(nèi)置jsdom插件,需要單獨安裝
  • 安裝官方eslint插件
npm i jest-environment-jsdom eslint-plugin-jest eslint-import-resolver-typescript jest-canvas-mock -D

4. 創(chuàng)建test目錄

在項目根目錄下創(chuàng)建test目錄,然后在test下創(chuàng)建__mocks和__tests__目錄,創(chuàng)建.eslintrc.js和tsconfig.json文件

附:配置示例

jest.config.js

/*
 * For a detailed explanation regarding each configuration property, visit:
 * https://jestjs.io/docs/configuration
 */

const { pathsToModuleNameMapper } = require('ts-jest');
const { compilerOptions } = require('./tsconfig.json');

module.exports = {
  // A preset that is used as a base for Jest's configuration
  preset: 'ts-jest',
  // The test environment that will be used for testing
  testEnvironment: 'jsdom',
  // The paths to modules that run some code to configure or set up the testing environment before each test
  setupFiles: ['jest-canvas-mock'],
  // Automatically clear mock calls, instances, contexts and results before every test
  clearMocks: true,
  // Indicates whether the coverage information should be collected while executing the test
  collectCoverage: true,
  // The directory where Jest should output its coverage files
  coverageDirectory: 'test/coverage',
  // The root directory that Jest should scan for tests and modules within
  // rootDir: undefined,
  // rootDir: __dirname,
  // An array of file extensions your modules use
  moduleFileExtensions: ['ts', 'js'],
  // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {
    prefix: '<rootDir>/',
  }),
  // The glob patterns Jest uses to detect test files
  testMatch: ['<rootDir>/test/__tests__/**/*.test.ts'],
  // A map from regular expressions to paths to transformers
  transform: {
    '^.+\\.ts$': 'ts-jest',
  },
};

配置測試用例的eslint規(guī)則

/test/.eslintrc.js

module.exports = {
  extends: ['../.eslintrc.js'],
  settings: {
    'import/resolver': {
      typescript: {
        alwaysTryTypes: true, // always try to resolve types under `<root>@types` directory even it doesn't contain any source code, like `@types/unist`

        // Choose from one of the "project" configs below or omit to use <root>/tsconfig.json by default
        // use <root>/path/to/folder/tsconfig.json
        project: 'tsconfig.json',
      },
    },
  },
  plugins: ['jest'],
  overrides: [
    // unit-tests
    {
      files: ['**/__tests__/**'],
      rules: {
        'jest/no-disabled-tests': 'warn',
        'jest/no-focused-tests': 'error',
        'jest/no-identical-title': 'error',
        'jest/prefer-to-have-length': 'warn',
        'jest/valid-expect': 'error',
      },
    },
  ],
};

代碼覆蓋率報告無需加入git版本管理,將test/coverage目錄追加至.gitignore

...

# Unit test / coverage reports
test/coverage

tsconfig.json中配置路徑別名

5. 愉快地開始單元測試

在 test/__test__ 目錄下新增自己模塊的單元測試目錄及文件,開始單元測試代碼編寫

文件命名規(guī)范: *.test.ts

6. 總結(jié) - 踩坑記錄

  • 默認preset為babel-jest,由于 Babel 對 Typescript 的支持是通過代碼轉(zhuǎn)換(Transpilation)實現(xiàn)的,而 Jest 在運行時并不會對你的測試用例做類型檢查。 因此建議安裝ts-jest來開啟此功能
  • 主要是在配置tsconfig.json路徑別名時花費了大量時間,處理ts的報錯以及eslint的報錯問題;
  • 以上配置的路徑別名只需在tsconfig.json一處配置,隨處可用,包括ts、eslint、jest都能讀取同一個別名配置;
  • 另外對于webpack的別名配置,網(wǎng)上也有讀取tsconfig配置的方案;

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 原生JavaScript實現(xiàn)的簡單放大鏡效果示例

    原生JavaScript實現(xiàn)的簡單放大鏡效果示例

    這篇文章主要介紹了原生JavaScript實現(xiàn)的簡單放大鏡效果,涉及javascript事件響應及頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-02-02
  • 用jscript實現(xiàn)新建word文檔

    用jscript實現(xiàn)新建word文檔

    用jscript實現(xiàn)新建word文檔...
    2007-06-06
  • 詳解iframe與frame的區(qū)別

    詳解iframe與frame的區(qū)別

    Frame與Iframe兩者可以實現(xiàn)的功能基本相同,不過Iframe比Frame具有更多的靈活性,通過本文給大家詳解細節(jié)iframe與frame的區(qū)別,對iframe與frame的區(qū)別相關(guān)知識感興趣的朋友一起學習吧
    2016-01-01
  • 微信小程序?qū)崿F(xiàn)點贊業(yè)務

    微信小程序?qū)崿F(xiàn)點贊業(yè)務

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)點贊業(yè)務,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • php輸出全部gb2312編碼內(nèi)的漢字方法

    php輸出全部gb2312編碼內(nèi)的漢字方法

    下面小編就為大家?guī)硪黄猵hp輸出全部gb2312編碼內(nèi)的漢字方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 解決layui中onchange失效以及form動態(tài)渲染失效的問題

    解決layui中onchange失效以及form動態(tài)渲染失效的問題

    今天小編就為大家分享一篇解決layui中onchange失效以及form動態(tài)渲染失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js實現(xiàn)無刷新監(jiān)聽URL的變化示例代碼詳解

    js實現(xiàn)無刷新監(jiān)聽URL的變化示例代碼詳解

    這篇文章主要介紹了js如何無刷新監(jiān)聽URL的變化,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 推薦幾個不錯的console調(diào)試技巧實現(xiàn)

    推薦幾個不錯的console調(diào)試技巧實現(xiàn)

    這篇文章主要介紹了推薦幾個不錯的console調(diào)試技巧實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 一文詳解uniapp中如何使用easycom自定義組件

    一文詳解uniapp中如何使用easycom自定義組件

    easycom是uniapp的一種組件自動引入的規(guī)則,使用這種規(guī)則可以使?jié)M足規(guī)則的組件無需注冊直接使用,下面這篇文章主要給大家介紹了關(guān)于uniapp中如何使用easycom自定義組件的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 原生js驗證簡潔注冊登錄頁面

    原生js驗證簡潔注冊登錄頁面

    這篇文章主要為大家詳細介紹了原生js驗證簡潔美觀注冊登錄頁面的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評論

连平县| 兴义市| 富裕县| 阳泉市| 娄底市| 广宁县| 子洲县| 漠河县| 彭阳县| 得荣县| 西充县| 永修县| 阜宁县| 正镶白旗| 佛教| 渝北区| 中方县| 扎兰屯市| 建水县| 莱芜市| 福海县| 墨竹工卡县| 宁明县| 潞城市| 雷山县| 镇江市| 石阡县| 鄂托克旗| 维西| 明溪县| 蒙自县| 盐城市| 永登县| 普兰店市| 黄梅县| 大渡口区| 平定县| 怀仁县| 来凤县| 罗山县| 德兴市|