Ich verwende die Webpack-Vorlage, die von Vues CLI generiert wurde, und habe versucht, einige Komponententests hinzuzufügen. Und Beispiel bereits zur Verfügung gestellt worden und es funktioniert perfekt:Fehler im Komponententest vue.js Karma (Webpack): undefined ist kein Konstruktor
import Vue from 'vue'
import Hello from '@/components/Hello'
describe('Hello.vue',() => {
it('should render correct contents',() => {
const Constructor = Vue.extend(Hello)
const vm = new Constructor().$mount()
expect(vm.$el.querySelector('.hello h1').textContent)
.to.equal('Welcome to Your Vue.js App')
})
})
Dann versuche ich einen weiteren Test hinzuzufügen, die ich gerade von Vue Dokumentation kopiert (Documentation link), aber etwas seltsam passiert:
// Inspect the raw component options
it('has a created hook',() => {
console.log(typeof Hello.created)
expect(typeof Hello.created).toBe('function')
})
habe ich die folgende Fehlermeldung:
LOG LOG: 'function'
✗ has a created hook
undefined is not a constructor (evaluating 'expect((0, _typeof3.default)(_Hello2.default.created)).toBe('function')')
webpack:///test/unit/specs/Hello.spec.js:16:38 <- index.js:75919:64
so scheint es, wie Hello.created
mir eine undefined
gibt, aber wie Sie sehen können, habe ich auch console.log
es zu überprüfen, und es gibt es das gewünschte Ergebnis: undefined
Kann mir jemand helfen, was passiert ist und wie es zu beheben? Ich habe bereits die Lösung here versucht und konnte es immer noch nicht funktionieren.
Als Referenz finden Sie hier, wie Hello.vue
wie folgt aussieht:
<template>
<div class="hello">
<h1>{{ msg }}</h1>
</div>
</template>
<script>
export default {
name: 'hello',
data() {
return {
msg: 'Welcome to Your Vue.js App',
message: 'hello!'
}
},
created() {
console.log('oh crap')
this.message = 'bye!'
}
}
</script>