2016-02-08 17 views
7

Chciałbym przetestować składnik Vue.js i nie udało mi się. Po prostu ustawiam właściwość komponentu i chcę potwierdzić, że jest ustawiona poprawnie. Jeśli to ma znaczenie, moduł jest ładowany za pomocą eksportu, a JS jest wyprowadzany za pomocą pakietu Webpack.Testowanie komponentu Vue.js

// component 
exports = module.exports = {}; 

module.exports = { 
    data: function() { 
    return { 
     active: false 
    }; 
    }, 
    methods: { 
    'close': function() { 
     console.log(this.active); // -> true 
     this.active = false; 
     console.log(this.active); // -> false 
    } 
    } 
}; 

// component-test 
var modal = require('../../resources/src/js/components/_component.js'); 
var assert = require('assert'); 

describe('close()', function() { 
    beforeEach(function() { 
    modal.data.active = true; 
    }); 
    it('should set modal to inactive', function() { 
    console.log(modal.data.active); // -> true 
    modal.methods.close(); 
    console.log(modal.data.active); // -> true 
    assert.equal(modal.data.active, false); 
    }); 
}); 
+0

więc co jest rzeczywiście braku? jaki jest wynik Twoich testów? Czy sprawdziłeś [vue js guide] (http://vuejs.org/guide/application.html#Unit_Testing) na temat testowania? –

+0

sprawdź także [przykład WebPack] (https://github.com/vuejs/vue-loader-example) na github, istnieje pewien test zdefiniowany tam, z karmą + jaśmin + phantomjs –

Odpowiedz

6

To powinno dać ci wskazówkę, jak ładować komponenty vue podczas testowania;

var modalComponent = require('../../resources/src/js/components/_component.js'); 
var assert = require('assert');   

//load the component with a vue instance 
vm = new Vue({ 
    template: '<div><test v-ref:test-component></test></div>', 
    components: { 
     'test': modalComponent 
    } 
}).$mount(); 

var modal = vm.$refs.testComponent; 

describe('close()', function() { 
    beforeEach(function() { 
     modal.active = true; 
    }); 

    it('should set modal to inactive', function() { 
     console.log(modal.active); // -> true 
     modal.close(); 
     console.log(modal.active); // -> false 
     assert.equal(modal.active, false); 
    }); 
}); 
+0

z jakiegoś powodu, działające metody takie jak ten powoduje przekroczenie limitu czasu PhantomJS. 'PhantomJS 2.1.1 (Mac OS X 0.0.0): Wykonano 0 z 4 ODŁĄCZONE (10.003 secs/0 secs)' –

Powiązane problemy