2017-05-10 4 views
2

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> 

Antwort

0

die Vorlage stellte sich heraus, wird mit chai tatsächlich statt Jasmin Unit-Test zu tun.

In diesem Fall

expect(typeof Hello.created).to.equal('function')

oder

expect(Hello.created).to.be.a('function')

beide arbeiten.

Verwandte Themen