2017-10-05 58 views
2

组件我使用Vue的2,加强on Rails的引擎红宝石,使用现有的Haml的意见,我的Vue组件模板inline-template属性。单元测试vue.js与联模板

是否有可能测试这样定义的组件的方法?我能找到的所有测试示例假定使用单个文件.vue组件。

(采用摩卡和柴)这些测试失败,[Vue warn]: Failed to mount component: template or render function not defined.

示例组件:

//main-nav.js 

import Vue from 'vue' 
const MainNav = { 
    data: function() { 
    return {open: true} 
    }, 

    methods: { 
    toggleOpen: function(item) { 
     item.open = !item.open 
    } 
    } 
} 

export default MainNav 

试验例:

//main-nav.test.js 
import MainNav from '../../admin/main-nav' 

describe('MainNav',() => { 
    let Constructor 
    let vm 

    beforeEach(() => { 
    Constructor = Vue.extend(MainNav) 
    vm = new Constructor().$mount() 
    }) 

    afterEach(() => { 
    vm.$destroy() 
    }) 

    describe('toggleOpen',() => { 
    it('has a toggleOpen function',() => { 
     expect(vm.MainNav.toggleOpen).to.be.a('function') 
    }) 

    it('toggles open from true to false',() => { 
     const result = MainNav.toggleOpen({'open': true}) 
     expect(result).to.include({open: false}) 
    }) 
    }) 
}) 

回答

0

事实证明,你仍然可以在指定模板组件文件,并且任何inline-template模板都将用于此目的。