J'utilise Vue 2 pour améliorer un moteur Ruby on Rails, en utilisant les attributs inline-template
dans les vues Haml existantes comme modèles pour mes composants Vue.Test d'unité composant vue.js avec inline-template
Est-il possible de tester les méthodes d'un composant défini comme ça? Tous les exemples de tests que je peux trouver supposent l'utilisation de composants à un seul fichier .vue
.
Ces tests (en utilisant Mocha et Chai) échouent avec [Vue warn]: Failed to mount component: template or render function not defined.
Exemple Composant:
//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
Exemple Test:
//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})
})
})
})