使用vue test utils做单元测试

  • mount和shallowMount的区别
    mount是完整的渲染(推荐使用)
    shallowMount渲染的子组件是假的,也就是只mount了这一层

  • 测试props的时候只能通过html来测试
    不能直接通过wrapper.props().属性,来测试,要通过html上的原生属性来测试
    比如测试input接受value

//正确的测试
it('接受value', () => {
            const wrapper = mount(Input, {
                propsData: {value: '123'}
            })
            const vm = wrapper.vm
            const input = vm.$el.querySelector('input')
            expect(input.value).to.equal('123')
        })

//错误的测试
it('接受value', () => {
            const wrapper = mount(Input, {
                propsData: {value: '123'}
            })
            expect(wrapper.props().value).to.equal('123')
        })

而且只有dom元素本身有这个属性的时候才能测试,上面的value就是input自有的属性

it('接受readonly', () => {
            const wrapper = mount(Input, {
                propsData: {
                    readonly: false
                }
            })
            const vm = wrapper.vm
            const inputElement = vm.$el.querySelector('input')
          //因为input没有readonly属性,所以是undefined,测试失败
            console.log(inputElement.readonly)
expect(inputElement.readonly).to.equal(false)
        })

而attributes只能获取到dom本身自有的属性,比如id,name什么的,自定义的也获取不到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,043评论 0 25
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 26,112评论 1 12
  • 说在前面 关于 react 的总结过去半年就一直碎碎念着要搞起来,各(wo)种(tai)原(lan)因(le)。心...
    陈嘻嘻啊阅读 11,809评论 7 41
  • 蛋糕理论是由ray通过“无据推证”的思维方式推导的理论,多有强行推理,移花接木之处,敬请家长指引。 近段时间胡思乱...
    罗纬阅读 7,294评论 0 0
  • 是我陪着俞小凡走完了生命中的最后半年。 那天夜里我开车从城市的最东边一路飞驰,在这城市最南边的一条小街上接到了在风...
    沉默的小铁匠阅读 3,658评论 1 7