vue 单元测试报错之 undefined is not a constructor (evaluating 'expect(vmComponent.count).toBe(1)')
下面是按照vue官方的例子,写的测试,// MyComponent.spec.jsimport Vue from 'vue'import MyComponent from '@/components/MyComponent.vue'describe('MyComponent', () => {// 检查原始组件选项it('has a created hook',...
·
下面是按照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了。
觉得博主写的不错的,请给博主一个赞吧!
更多推荐
已为社区贡献14条内容
所有评论(0)