jest 配置和sonnar接入

1. 安装依赖

npm install babel-jest@29.3.1

npm install @vue/cli-plugin-unit-jest@4.4.4

npm install jest-sonar-reporter@2.0.0

npm install babel-plugin-transform-require-context@0.1.1

2. 配置文件

在项目根目录增加jest.config.js配置文件,具体内容如下:

module.exports = {
  moduleFileExtensions: ['js', 'json', 'vue'],
  transform: {
    '^.+\\.vue$': 'vue-jest',
    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
      'jest-transform-stub',
    '^.+\\.jsx?$': 'babel-jest'
  },
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1'
  },
  snapshotSerializers: ['jest-serializer-vue'], // 将保存的快照测试结果进行序列化
  testMatch: [
    '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
  ], //匹配哪些文件进行测试
  // collectCoverage: true,
  collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'],
  coveragePathIgnorePatterns: ['/node_modules/', '/__tests__/'], // 不需要写单元测试的文件
  coverageReporters: [
    'lcov',
    'text-summary'
  ],
  testResultsProcessor: 'jest-sonar-reporter',
  testEnvironmentOptions: {
    url: "http://localhost/"
  },
}

更新babel.config.js文件,添加test配置

// babel.config.js
//  解决require.context is not a function问题
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  'env': {
    'development': {
      'plugins': ['dynamic-import-node']
    },
    "test": {
      "plugins": ["transform-require-context"]
    }
  }
}

修改.gitignore文件

.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
coverage/
test-report.xml
 
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

3.执行单元测试

在package.json script中添加启动命令,

"test:unit": "vue-cli-service test:unit --coverage"

这一步下去会生成两个文件,前提是你有写单测文件 .spec.js 文件就是单测文件

生成的两个文件一个是coverage文件夹,一个是test-report.xml 文件

前端接入sonar

根目录添加 .gitlab-ci.yml、 sonar-project.properties 配置文件

.gitlab-ci.yml

stages:
  - sonar
test:
  stage: sonar
  tags:
    - javascript
  script:
    - npm install
    - npm run test:unit
    - sonar-scanner -Dproject.settings=./sonar-project.properties -Dsonar.projectKey=$CI_PROJECT_NAME:$CI_COMMIT_BRANCH -Dsonar.projectName=$CI_PROJECT_NAME:$CI_COMMIT_BRANCH
  when: always

sonar-project.properties

sonar.language=js
sonar.sources=src
sonar.sourceEncoding=UTF-8
sonar.testExecutionReportPaths=test-report.xml
sonar.javascript.lcov.reportPaths=coverage/lcov.info
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
jest.config.js是用于配置Jest测试框架的文件。它允许你自定义Jest的行为和设置,以满足你的项目需求。下面是一些常见的配置选项: 1. `preset`: 用于指定预设配置,可以是一个字符串或一个包含配置选项的对象。预设配置可以帮助你快速设置常见的测试环境,例如`@vue/cli-plugin-unit-jest`用于Vue项目。 2. `testEnvironment`: 指定测试运行的环境,默认为`jsdom`,可以是`node`、`jsdom`或者自定义的环境。 3. `testMatch`: 指定要运行的测试文件的匹配模式,默认为`**/__tests__/**/*.[jt]s?(x)`。你可以根据自己的项目结构和命名规范来修改。 4. `moduleFileExtensions`: 指定模块文件的扩展名,默认为`['js', 'json', 'jsx', 'ts', 'tsx', 'node']`。如果你的项目使用了其他扩展名的文件,可以在这里添加。 5. `transform`: 配置文件转换器,用于将不同类型的文件转换为可执行的JavaScript代码。例如,使用`babel-jest`可以将ES6代码转换为ES5代码。 6. `coverageThreshold`: 配置代码覆盖率的阈值,可以设置全局或每个文件的覆盖率要求。 7. `setupFilesAfterEnv`: 指定在运行测试之前需要执行的文件,可以用于设置全局的测试环境。 8. `snapshotSerializers`: 配置快照序列化器,用于自定义快照的序列化和反序列化过程。 9. `globals`: 全局变量的配置,可以在测试文件中直接使用。 以上是一些常见的配置选项,你可以根据自己的需求进行配置。如果你有具体的问题或需要更详细的介绍,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值