2016-11-11 3 views
1

Ich habe Vue-Komponenten mit dieser Struktur erstellt.Unit Test Vue Component Rails App

Ich möchte dies mit Karma und Jasmin oder Jasminschienen Edelstein testen. Ich kann nicht herausfinden, wie man die Komponente prüft. In allen Beispielen in den Dokumenten verwenden sie eine Testmethode für Requirejs-Module. Ich benutze die globale Komponente zum Erstellen von Komponenten.

Dies sind die Beispiele aus der Dokumentation.

<template> 
    <span>{{ message }}</span> 
</template> 
<script> 
    export default { 
    data() { 
     return { 
     message: 'hello!' 
     } 
    }, 
    created() { 
     this.message = 'bye!' 
    } 
    } 
</script> 

// Import Vue and the component being tested 
import Vue from 'vue' 
import MyComponent from 'path/to/MyComponent.vue' 

// Here are some Jasmine 2.0 tests, though you can 
// use any test runner/assertion library combo you prefer 

describe('MyComponent',() => { 
    // Inspect the raw component options 
    it('has a created hook',() => { 
    expect(typeof MyComponent.created).toBe('function') 
    }) 
    // Evaluate the results of functions in 
    // the raw component options 
    it('sets the correct default data',() => { 
    expect(typeof MyComponent.data).toBe('function') 
    const defaultData = MyComponent.data() 
    expect(defaultData.message).toBe('hello!') 
    }) 
    // Inspect the component instance on mount 
    it('correctly sets the message when created',() => { 
    const vm = new Vue(MyComponent).$mount() 
    expect(vm.message).toBe('bye!') 
    }) 
    // Mount an instance and inspect the render output 
    it('renders the correct message',() => { 
    const Ctor = Vue.extend(MyComponent) 
    const vm = new Ctor().$mount() 
    expect(vm.$el.textContent).toBe('bye!') 
    }) 
}) 

Antwort

0

import foo from 'bar'; und var foo = require('bar'); machen das Gleiche, was foo verfügbar als Variable in der aktuellen Datei. Im Testbeispiel ist MyComponent die importierte Vue-Komponenteninstanz, die auch mit MyComponent = Vue.component(...); in der aktuellen Datei erreicht werden kann. Wenn sich Ihr Test also in derselben Datei befindet, verwenden Sie einfach die Variable MyComponent, andernfalls müssen Sie MyComponent zuerst mit module.exports = MyComponent oder export default MyComponent exportieren. Diese Exporte gehen davon aus, MyComponent ist das einzige, was Sie exportieren möchten, wenn Sie mehrere Variablen exportieren möchten, überprüfen Sie die Dokumentation: http://wiki.commonjs.org/wiki/Modules/1.1https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/export