下面是按照vue官方的例子,写的测试,

// MyComponent.spec.js 

import Vue from 'vue'
import MyComponent from '@/components/MyComponent.vue'

describe('MyComponent', () => {
  // 检查原始组件选项
  it('has a created hook', () => {
    expect(typeof MyComponent.created).toBe('function')
  })

  // 评估原始组件选项中的函数的结果
  it('sets the correct default data', () => {
    expect(typeof MyComponent.data).toBe('function')
    const defaultData = MyComponent.data()
    expect(defaultData.message).toBe('hello!')
  })
})

运行npm run unit一直提示:undefined is not a constructor (evaluating 'expect(vmComponent.count).toBe(function)')

网上百度了不少答案,下面总结了下:

自带的phantomJs浏览器的时候会报错,所以需要安装karma-chrome-launcher 

npm i -D karma-chrome-launcher

可以查看官方文档,有说明:

安装完后再在karma.conf.js中将 browsers: ['PhantomJS']改成browsers: ['Chrome']

 

再次运行npm run unit之前的错误没有了,但是会出现新的错误:Error: Invalid Chai property: toBe. Did you mean "to"?

无效的Chai属性:toBe

去查看了下当前项目的package.json发现我们使用的是chai断言库,而vue官方使用的是Jasmine断言库

找到问题就好办了,我们去查看下chai的文档 ,将之前的代码的toBe()换成to.equal(),然后再次运行代码,就ok了。

 

觉得博主写的不错的,请给博主一个赞吧!

Logo

前往低代码交流专区

更多推荐