Testando

O template vue-cli do webpack oferece testes de unidade pré-configurados e configurações de teste es2 para você.

Ao testar arquivos *.vue não podemos usar um corredor de teste simples baseado em CommonJs, porque ele não sabe como manipular arquivos *.vue. Em vez disso, nós ainda usaremos webpack + vue-loader para manipular nossos arquivos de teste. A configuração recomendada é usando Karma e karma-webpack.

Karma é um corredor de teste que inicia navegadores e executa seus testes. Você pode escolher qual navegador você quer para testar e qual framework (exemplo: Mocha ou Jasmine) você quer usar. Aqui está um exemplo de configuração Karma que executa os testes dentro de PhantomJS com o framework de teste Jasmine.

npm install\ karma karma-webpack\ karma-jasmine jasmine-core\ karma-phantomjs-launcher phantomjs\ --save-dev 
// podemos usar a mesma configuração que é exigida pelo webpackm // entretanto, lembre-se de remover a entrada original, uma vez // que não precisamo durante os testes var webpackConfig = require('./webpack.config.js') delete webpackConfig.entry // karma.conf.js module.exports = function (config) { config.set({ browsers: ['PhantomJS'], frameworks: ['jasmine'], // este é o arquivo de entrada para todos os nossos testes files: ['test/index.js'], // vamos passar o arquivo de entrada para webpack empacotar preprocessors: { 'test/index.js': ['webpack'] }, // use a configuração do webpack webpack: webpackConfig, // evita pedaços de texto inúteis webpackMiddleware: { noInfo: true }, singleRun: true }) } 

E para o arquivo test/index.js de entrada:

// test/index.js // requisita todos os arquivos de testes usando 0 recursos especial do webpack // https://webpack.github.io/docs/context.html#require-context var testsContext = require.context('.', true, /\.spec$/) testsContext.keys().forEach(testsContext) 

Este recurso de entrada simplesmente requisita todos os outros arquivos na pasta que terminam com .spec.js. Agora podemos realmente escrever alguns testes:

// test/component-a.spec.js var Vue = require('vue') var ComponentA = require('../../src/components/a.vue') describe('a.vue', function () { // Opções JavaScript de afirmação (asserting) it('should have correct message', function () { expect(ComponentA.data().msg).toBe('Olá do componente A!') }) // Afirmando o resultado renderizado fornecido pelo componente it('should render correct message', function () { var vm = new Vue({ template: '<div><test></test></div>', components: { 'test': ComponentA } }).$mount() expect(vm.$el.querySelector('h2.red').textContent).toBe('Olá do componente A!') }) }) 

Para executar os testes, adicione o seguinte script NPM:

// package.json ... "scripts": { ... "test": "karma start karma.conf.js" } ... 

Finalmente execute:

npm test 

Novamente, template vue-cli webpack contém um exemplo totalmente funcional com testes.

results matching ""

    No results matching ""