2016-02-10 44 views
8

私はmochaと酵素を使ってユニットテストを更新しようとしています。私がテストしているコードは、JSXとReactを使用してES6にあります。モカはJSXを認識しません

テストスクリプトのJSXでmochaをエラーにすることができませんでした。

テストスクリプト:

import React from 'react'; 
import assert from 'assert'; 
import { shallow } from 'enzyme'; 
import SamplePageMain from '../SamplePageMain'; 

describe('<SamplePageMain />',() => { 

    var samplePage = shallow(<SamplePageMain />); 

    it('should render', function() { 
     assert.notEqual(samplePage, null); 
    }); 

})。

gulpfile.js:

require('babel-core/register'); 

... 

gulp.task('test', function() { 
    return gulp.src('scripts/**/test/*.js', {read: false}) 
     .pipe(mocha()); 
}); 

、出力は次のとおりです。

gulp test 

[16:19:06] Using gulpfile ~/dev/bikini/gulpfile.js 
[16:19:06] Starting 'test'... 
[16:19:06] 'test' errored after 62 ms 
[16:19:06] SyntaxError in plugin 'gulp-mocha' 
Message: 
     /Users/me/dev/bikini/scripts/components/test/samplePageMain.js:  Unexpected token (9:26) 
Details: 
    pos: 206 
    loc: [object Object] 
    _babel: true 
    codeFrame: 7 | 
    8 | 
> 9 | var samplePage = shallow(<SamplePageMain />); 
    |       ^
    10 | 
    11 | it('should render', function() { 
    12 |  assert.notEqual(samplePage, null); 
Stack: 
SyntaxError:  /Users/me/dev/bikini/scripts/components/test/samplePageMain.js:  Unexpected token (9:26) 
    7 | 
    8 | 
> 9 | var samplePage = shallow(<SamplePageMain />); 
    |       ^
    10 | 
    11 | it('should render', function() { 
    12 |  assert.notEqual(samplePage, null); 
    at Parser.pp.raise (/Users/me/dev/bikini/node_modules/babel- register/node_modules/babel-core/node_modules/babylon/index.js:1425:13) 
    at Parser.pp.unexpected (/Users/me/dev/bikini/node_modules/babel- register/node_modules/babel-core/node_modules/babylon/index.js:2907:8) 
    at Parser.pp.parseExprAtom  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:754:12) 
    at Parser.pp.parseExprSubscripts  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:509:19) 
    at Parser.pp.parseMaybeUnary  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:489:19) 
    at Parser.pp.parseExprOps  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:420:19) 
    at Parser.pp.parseMaybeConditional  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:402:19) 
    at Parser.pp.parseMaybeAssign  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:365:19) 
    at Parser.pp.parseExprListItem  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:1232:16) 
    at Parser.pp.parseCallExpressionArguments  (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:585:20) 

私が成功したことを証明するためにbrowserifyを介してソースコードを実行し、テストディレクトリに置くことによって実行するテストを持っていましたそれはモカ/酵素自体ではないということです。私の問題は、魔法の魔法を正しいものにしようとすることです。

+0

これは見ましたか? http://stackoverflow.com/questions/28858957/gulp-mocha-how-to-pass-the-compilers-flag – azium

+0

はい。これらの提案はありません – brendangibson

+0

コマンドラインでmochaテストを 'npm test'で実行します。' 'test": "find ./src -name '* .test.js' | xargs mocha --require babel-core/register " – azium

答えて

17

これは、Babel 6のユーザーにとって非常に一般的な問題です。これは、独自の(ベベルコア)は何もしません。それは、変換中にトランスフォーム/プラグインが供給されることを要求します。

Babelは、プリセットとして共通のプラグインのバンドルを提供しています。 Reactプロジェクトの共通点はbabel-preset-2015,babel-preset-reactおよびbabel-preset-stage-0です。モカのために

{ 
    "presets": ["react", "es2015", "stage-0"] 
} 

一気のチェックアウトでこのスタックgulp-mocha how to pass the compilers flag?:NPMは、それらをインストールした後、次のようになります.babelrc設定ファイルを追加します。

一般的にBabel 6を設定するにはここをクリックhttps://babeljs.io/blog/2015/10/31/setting-up-babel-6

関連する問題