webpack手动搭建vue项目(六)—— Karma+Mocha+chai单元测试

3 篇文章 0 订阅
3 篇文章 0 订阅

Karma 是一个启动浏览器运行测试并生成报告的测试运行器。我们会使用 Mocha 框架撰写测试,同时使用 chai 作为断言库。参考

1.安装依赖

> npm install --save-dev @vue/test-utils karma karma-chrome-launcher karma-mocha karma-sourcemap-loader karma-spec-reporter karma-webpack mocha

完成后添加测试脚本

// package.json
{
  "scripts": {
    "test": "karma start --single-run"
  }
}

 2.创建karma.conf.js文件

在创建karma.conf.js文件之前先创建webpack.test.js文件:

const path = require('path')
const webpack = require('webpack')
const merge = require('webpack-merge')
const common = require('./webpack.base')

module.exports = merge(common, {
    devtool: '#eval-source-map',
	plugins: [
		new webpack.DefinePlugin({
			'process.env.NODE_ENV': JSON.stringify('test'),
			'process.env.Mock': true
		})
	]
})

在项目的主目录创建一个 karma.conf.js 文件:

/ karma.conf.js

var webpackConfig = require('./build/webpack.test.js')

module.exports = function(config) {
  config.set({
    frameworks: ['mocha'],

    files: ['test/**/*.spec.js'],

    preprocessors: {
      '**/*.spec.js': ['webpack', 'sourcemap']
    },

    webpack: webpackConfig,

    reporters: ['spec'],

    browsers: ['Chrome']
    //reporters: ['spec', 'coverage'],  注释掉的为配置测试覆盖率后面会讲到

    //coverageReporter: {
		//dir: './coverage',
		//reporters: [{ type: 'lcov', subdir: '.' }, { type: 'text-summary' }]
	//}
  })
}

3. 选用一个断言库

> npm install chai karma-chai --save-dev

4.添加一个测试

在 src 中创建一个名为 Counter.vue 的文件:

<template>
  <div>
    {{ count }}
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        count: 0
      }
    },

    methods: {
      increment() {
        this.count++
      }
    }
  }
</script>

 

然后添加一个名为 test/Counter.spec.js 的测试文件,并写入如下代码:

import { expect } from 'chai'
import { shallowMount } from '@vue/test-utils'
import Counter from '../src/Counter.vue'

describe('Counter.vue', () => {
  it('increments count when button is clicked', () => {
    const wrapper = shallowMount(Counter)
    wrapper.find('button').trigger('click')
    expect(wrapper.find('div').text()).contains('1')
  })
})

接下来我们可以运行测试:

npm run test

Woohoo,我们的测试跑起来了!

5.总结

注意:在上文五中提到的api-path文件中如果测试调用接口数据,需要:

const mockIp = process.env.NODE_ENV === 'test' ? 'http://localhost:8080' : '' // 此处的ip主要提供为单元测试时候用可以为任意ip

所以路径示例为:`${mockIp}/url`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值