2016-11-14 12 views
0

vueコンポーネントの単体テストを実行しようとしています。私は、vueファイルを読み込むためにbabelパーサーを使用しています。SyntaxError:karmaとwebpackでvueコンポーネントテストを実行中にエラーを解析します。

これは私のカルマ-configファイルである:これはUである

var path = require('path') 
 
var webpack = require('webpack') 
 

 
module.exports = { 
 
    entry: './main.js', 
 
    module: { 
 
    loaders: [ 
 
     { 
 
     test: /\.vue$/, 
 
     loader: 'vue' 
 
     }, 
 
     { 
 
    test: /\.js$/, 
 
    loader: 'babel', 
 
    include: [ 
 
     path.join(__dirname, 'app'), 
 
     path.join(__dirname, 'test') 
 
    ], 
 
    exclude: path.join(__dirname, 'node_modules') 
 
} 
 
    ] 
 
} 
 
}

:これは私のWebPACKの設定ファイルである

var webpackConfig = require('./webpack.config.js') 
 
delete webpackConfig.entry 
 

 
// karma.conf.js 
 
module.exports = function (config) { 
 
    config.set({ 
 
    browsers: ['PhantomJS'], 
 
    frameworks: ['jasmine'], 
 
    // this is the entry file for all our tests. 
 
    files: ['test/index.js'], 
 
    // we will pass the entry file to webpack for bundling. 
 
    preprocessors: { 
 
     'test/index.js': ['webpack'] 
 
    }, 
 
    // use the webpack config 
 
    webpack: webpackConfig, 
 
    // avoid walls of useless text 
 
    webpackMiddleware: { 
 
     noInfo: true 
 
    }, 
 
    singleRun: true 
 
    }) 
 
}

NITテストファイル:

// test/component-a.spec.js 
 
var Vue = require('vue') 
 
var ComponentA = require('./a.vue') 
 

 
describe('a.vue', function() { 
 

 
    // asserting JavaScript options 
 
    it('should have correct message', function() { 
 
    expect(ComponentA.data().msg).toBe('Hello from Component A!') 
 
    }) 
 

 
    // asserting rendered result by actually rendering the component 
 
    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('Hello from Component A!') 
 
    }) 
 
})

そのこのパースエラーを投げ、-> karma start karma.conf.jsを使用してテストを実行する場合:

14 11 2016 19:15:36.808:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/ 
14 11 2016 19:15:36.812:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency 
14 11 2016 19:15:36.873:INFO [launcher]: Starting browser PhantomJS 
14 11 2016 19:15:40.126:INFO [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Connected on socket /#8Hrp1VoJHm1Y6JW9AAAA with id 58972703 
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR 
    SyntaxError: Parse error 
    at test/index.js:6341 

答えて

0

をエラーが行6341で、あなたのコード内でパースエラーがあることを示しますindex.jsのあなたはファイルindex.jsにラベルを付けていないので、行番号を含めていないので、このエラーの具体的な原因を確実に伝えることはできません。しかし、index.jsの6341行目を見てブラケットやセミコロンなどの不具合をチェックしたり、周囲のコードをチェックしたりする必要があることを伝えることができます。ドキュメントの構文エラーです。また、その行のindex.jsで呼び出される可能性のある他のファイルもチェックします。それ以外の場合は、index.jsの内容を質問に含めることをお勧めします。まだ行っていない場合は、index.jsにラベルを付け、行番号を含めてください。これにより、問題の修正方法を具体的に教えることができます。

+0

index.js( ''、trueの場合、/\.spec$/)のみVAR testsContext = require.contextが含まれてい testsContext.keys()。forEachの(testsContext) –

+0

index.jsには6341行がない –

+0

ああ私の推測は、2つのうちの1つになります.Webpackは、パッケージング後に6341以上の行を含むファイルを作成し、index.js(Webpackedファイルを確認して確認したもの)と呼んだり、末尾に構文エラーがあります空の行が何らかの理由で新しい行として解析される原因となっているファイルの(おそらく)。それらが私が最初に確認するものです。 –

関連する問題