关于vue单元测试,js函数测试的问题,提示expect不是一个函数。
我在做vue单元测试,项目都运行起来了,下面的组件测试断言能通过。
Hello.vue的测试文件
/* Hello.spec.js */
import Vue from 'vue'
import loading from '@/components/loading'
// 挂载元素并返回已渲染的文本的工具函数
function getRenderedText(Component, propsData) {
const Ctor = Vue.extend(Component)
const vm = new Ctor({ propsData: propsData }).$mount()
return vm.$el.textContent
}
describe('Hello.vue', () => {
it('should render correct contents', () => {
const Constructor = Vue.extend(loading)
const vm = new Constructor().$mount()
Vue.nextTick(() => {
expect(vm.$el.querySelector('.loading-container h1').textContent).to.be('hello vue!')
});
})
})
测试结果
Hello.vue
✓ should render correct contents
但是我现在要测试 src/assets/js/utils.js
里的工具函数。
/* utils.js */
export const currency = (value, currency, decimals) => {
...
}
我创建了相对应的测试文件:
/* utils.spec.js */
import Vue from 'vue'
import * as utils from '@/assets/js/utils.js'
// 这样写不对
describe('utils.js', () => {
it('currency应该能输出正确的值', done => {
Vue.nextTick(() => {
expect(utils.currency(10)).to.be(10.00);
expect(utils.currency(10, '¥')).to.be('¥10.00');
});
})
})
//或者这样写也不对
describe('utils.js', () => {
it('currency应该能输出正确的值', done => {
expect(utils.currency(10)).to.be(10.00);
expect(utils.currency(10, '¥')).to.be('¥10.00');
})
})
上面的两种写法都有提示了一下console错误,是不是需要别的上面方法呢,还是说vue的单元测试只能测试vue组件或者vue的内部方法?
ERROR LOG: '[Vue warn]: Error in nextTick: "TypeError: expect(...).to.be is not a function"'
ERROR LOG: TypeError{}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
单纯看这个函数除了done没有调用之外没有其他的问题。
为什么要加nextTick才可以呢? 去掉nextTick就报错了