2016-11-15 66 views
0

我想創建沿着這些準則可測試前端項目:噶+咖啡色+ Browserify + ES6測試棧設置問題

  • 陣營組件架構,在每個組件文件夾__test__文件夾;
  • 測試使用ES6模塊;
  • browserify將所有內容都捆綁成一個文件,而babelify transpiles ES6;
  • karma使用該包進行測試。

這是我karma.conf.js

module.exports = function (karma) { 
    const testFiles = __dirname + '/proj/static/src/**/__tests__/*.js'; 

    karma.set({ 
     frameworks: ['browserify', 'mocha'], 
     browsers: ['Chrome'], 
     files: [ 
      testFiles 
     ], 
     logLevel: 'LOG_DEBUG', 
     preprocessors: { 
      testFiles: ['browserify'], 
     }, 
     reporters: ['dots'], 
     singleRun: true, 

     browserify: { 
      debug: true, 
      transform: [ 'babelify' ] 
     }, 
    }); 
}; 

這是我.babelrc

{ 
    presets: ['es2015', 'react'] 
} 

然而,發射業報後,我得到這個錯誤:

... 
Uncaught SyntaxError: Unexpected token import 
    at proj/static/src/js/some-component/__tests__/some.test.js:1 

顯然代碼沒有得到轉譯。我讀過多個教程,都使用不同的技術。任何想法如何解決這個問題?

P.S. TDD在前端還是很新鮮的。

編輯 這些是安裝NPM依賴性:

"babel-preset-es2015": "^6.18.0", 
"babel-preset-react": "^6.16.0", 
"babelify": "^7.3.0", 
"browserify": "^13.1.1", 
"expect": "^1.20.2", 
"karma": "^1.3.0", 
"karma-browserify": "^5.1.0", 
"karma-chrome-launcher": "^2.0.0", 
"karma-cli": "^1.0.1", 
"karma-mocha": "^1.3.0", 
"mocha": "^3.1.2", 
"reactify": "^1.1.1", 
"watchify": "^3.7.0" 

回答

0

的問題是,testFiles處於preprocessors配置中的項的值。您需要密鑰的值爲與要預處理的文件匹配的glob。沒有文件正在匹配,所以沒有文件正在預處理。

我想試試這個:

preprocessors: { 
    '**/*.js': ['browserify'] 
} 

你的問題不進入你的項目的目錄結構的細節,所以我建議,匹配所有.js文件水珠。您可以對其進行優化以僅匹配需要轉換的源文件。

請注意,glob需要匹配所有源文件 - 而不僅僅是測試。

+0

配置的改變似乎解決了這個問題。但是現在在'./node_modules/.bin/karma start'之後,我從browserify得到了一堆類似於'[framework.browserify]:bundle error的錯誤:無法從'D:\'中找到模塊'./runnable'。凸出\ node_modules \ mocha''。 然而,摩卡是本地安裝的。並且存在給定路徑的模塊。 – Crossfire