一、安装

  1. // 1 创建vue项目
  2. vue create jest // 选默认vue3
  3. // 2,进入项目
  4. cd jest
  5. code ./
  6. // 3,安装jest
  7. vue add unit-jest
  8. // 项目中多了jest.config.js文件和tests文件夹

二、配置

  1. // jest.config.js
  2. module.exports = {
  3. preset: '@vue/cli-plugin-unit-jest',
  4. transform: {
  5. '^.+\\.vue$': 'vue-jest',
  6. '^.+\\.ts$': 'ts-jest', // 新增:ts能被读取
  7. // '^.+\\.js$': "<rootDir>/node_modules/babel-jest" // js文件可以用es6
  8. }
  9. }

三、运行

  1. npm run test:unit

四、测试公用函数

1,新增函数

  1. // src/utils/index.ts
  2. export const add = (num:number)=>{
  3. return ++num
  4. }

2,测试函数

  1. // tests/unit/example.spec.js
  2. import { add } from '@/utils/index.ts'
  3. describe('utils测试', () => {
  4. test('adds 1 + 2 to equal 3', () => {
  5. expect(add(2)).toBe(3);
  6. });
  7. })

五、测试vue组件

1,新增组件

  1. // src/components/HelloWorld.vue
  2. <template>
  3. <h1>{{ msg }}</h1>
  4. </template>
  5. <script>
  6. export default {
  7. props: {
  8. msg: String
  9. }
  10. }
  11. </script>

2,测试组件

  1. // tests/unit/example.spec.js
  2. import { shallowMount } from '@vue/test-utils'
  3. import HelloWorld from '@/components/HelloWorld.vue'
  4. describe('HelloWorld.vue组件测试', () => {
  5. it('renders props.msg when passed', () => {
  6. const msg = 'new message'
  7. const wrapper = shallowMount(HelloWorld, {
  8. props: { msg }
  9. })
  10. expect(wrapper.text()).toMatch(msg)
  11. })
  12. })

六、运测试结果

  1. > jest@0.1.0 test:unit
  2. > vue-cli-service test:unit
  3. PASS tests/unit/example.spec.js
  4. HelloWorld.vue组件
  5. renders props.msg when passed (13ms)
  6. utils测试
  7. adds 1 + 2 to equal 3
  8. Test Suites: 1 passed, 1 total
  9. Tests: 2 passed, 2 total
  10. Snapshots: 0 total
  11. Time: 2.345s
  12. Ran all test suites.

参考:https://www.jestjs.cn/docs/getting-started